Hi Javier,

I love your patch! Yet something to improve:

[auto build test ERROR on next-20171214]
[cannot apply to char-misc/char-misc-testing v4.15-rc3 v4.15-rc2 v4.15-rc1 
v4.15-rc4]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Javier-Martinez-Canillas/tpm-only-attempt-to-disable-the-LPC-CLKRUN-if-is-already/20171220-041605
config: x86_64-randconfig-x007-201751 (attached as .config)
compiler: gcc-7 (Debian 7.2.0-12) 7.2.1 20171025
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

All errors (new ones prefixed by >>):

   drivers/char/tpm/tpm_tis_core.c: In function 'tpm_tis_core_init':
>> drivers/char/tpm/tpm_tis_core.c:836:26: error: assignment of member 
>> 'clk_enable' in read-only object
       chip->ops->clk_enable = NULL;
                             ^

vim +/clk_enable +836 drivers/char/tpm/tpm_tis_core.c

   815  
   816          /* Maximum timeouts */
   817          chip->timeout_a = msecs_to_jiffies(TIS_TIMEOUT_A_MAX);
   818          chip->timeout_b = msecs_to_jiffies(TIS_TIMEOUT_B_MAX);
   819          chip->timeout_c = msecs_to_jiffies(TIS_TIMEOUT_C_MAX);
   820          chip->timeout_d = msecs_to_jiffies(TIS_TIMEOUT_D_MAX);
   821          priv->phy_ops = phy_ops;
   822          dev_set_drvdata(&chip->dev, priv);
   823  
   824          if (is_bsw()) {
   825                  priv->ilb_base_addr = 
ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
   826                                          ILB_REMAP_SIZE);
   827                  if (!priv->ilb_base_addr)
   828                          return -ENOMEM;
   829  
   830                  clkrun_val = ioread32(priv->ilb_base_addr + 
LPC_CNTRL_OFFSET);
   831                  /* Check if CLKRUN# is already not enabled in the LPC 
bus */
   832                  if (!(clkrun_val & LPC_CLKRUN_EN)) {
   833                          priv->flags |= TPM_TIS_CLK_ENABLE;
   834                          iounmap(priv->ilb_base_addr);
   835                          priv->ilb_base_addr = NULL;
 > 836                          chip->ops->clk_enable = NULL;
   837                  }
   838          }
   839  
   840          if (chip->ops->clk_enable != NULL)
   841                  chip->ops->clk_enable(chip, true);
   842  
   843          if (wait_startup(chip, 0) != 0) {
   844                  rc = -ENODEV;
   845                  goto out_err;
   846          }
   847  
   848          /* Take control of the TPM's interrupt hardware and shut it off 
*/
   849          rc = tpm_tis_read32(priv, TPM_INT_ENABLE(priv->locality), 
&intmask);
   850          if (rc < 0)
   851                  goto out_err;
   852  
   853          intmask |= TPM_INTF_CMD_READY_INT | 
TPM_INTF_LOCALITY_CHANGE_INT |
   854                     TPM_INTF_DATA_AVAIL_INT | TPM_INTF_STS_VALID_INT;
   855          intmask &= ~TPM_GLOBAL_INT_ENABLE;
   856          tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask);
   857  
   858          rc = tpm2_probe(chip);
   859          if (rc)
   860                  goto out_err;
   861  
   862          rc = tpm_tis_read32(priv, TPM_DID_VID(0), &vendor);
   863          if (rc < 0)
   864                  goto out_err;
   865  
   866          priv->manufacturer_id = vendor;
   867  
   868          rc = tpm_tis_read8(priv, TPM_RID(0), &rid);
   869          if (rc < 0)
   870                  goto out_err;
   871  
   872          dev_info(dev, "%s TPM (device-id 0x%X, rev-id %d)\n",
   873                   (chip->flags & TPM_CHIP_FLAG_TPM2) ? "2.0" : "1.2",
   874                   vendor >> 16, rid);
   875  
   876          probe = probe_itpm(chip);
   877          if (probe < 0) {
   878                  rc = -ENODEV;
   879                  goto out_err;
   880          }
   881  
   882          /* Figure out the capabilities */
   883          rc = tpm_tis_read32(priv, TPM_INTF_CAPS(priv->locality), 
&intfcaps);
   884          if (rc < 0)
   885                  goto out_err;
   886  
   887          dev_dbg(dev, "TPM interface capabilities (0x%x):\n",
   888                  intfcaps);
   889          if (intfcaps & TPM_INTF_BURST_COUNT_STATIC)
   890                  dev_dbg(dev, "\tBurst Count Static\n");
   891          if (intfcaps & TPM_INTF_CMD_READY_INT)
   892                  dev_dbg(dev, "\tCommand Ready Int Support\n");
   893          if (intfcaps & TPM_INTF_INT_EDGE_FALLING)
   894                  dev_dbg(dev, "\tInterrupt Edge Falling\n");
   895          if (intfcaps & TPM_INTF_INT_EDGE_RISING)
   896                  dev_dbg(dev, "\tInterrupt Edge Rising\n");
   897          if (intfcaps & TPM_INTF_INT_LEVEL_LOW)
   898                  dev_dbg(dev, "\tInterrupt Level Low\n");
   899          if (intfcaps & TPM_INTF_INT_LEVEL_HIGH)
   900                  dev_dbg(dev, "\tInterrupt Level High\n");
   901          if (intfcaps & TPM_INTF_LOCALITY_CHANGE_INT)
   902                  dev_dbg(dev, "\tLocality Change Int Support\n");
   903          if (intfcaps & TPM_INTF_STS_VALID_INT)
   904                  dev_dbg(dev, "\tSts Valid Int Support\n");
   905          if (intfcaps & TPM_INTF_DATA_AVAIL_INT)
   906                  dev_dbg(dev, "\tData Avail Int Support\n");
   907  
   908          /* INTERRUPT Setup */
   909          init_waitqueue_head(&priv->read_queue);
   910          init_waitqueue_head(&priv->int_queue);
   911          if (irq != -1) {
   912                  /* Before doing irq testing issue a command to the TPM 
in polling mode
   913                   * to make sure it works. May as well use that command 
to set the
   914                   * proper timeouts for the driver.
   915                   */
   916                  if (tpm_get_timeouts(chip)) {
   917                          dev_err(dev, "Could not get TPM timeouts and 
durations\n");
   918                          rc = -ENODEV;
   919                          goto out_err;
   920                  }
   921  
   922                  if (irq) {
   923                          tpm_tis_probe_irq_single(chip, intmask, 
IRQF_SHARED,
   924                                                   irq);
   925                          if (!(chip->flags & TPM_CHIP_FLAG_IRQ))
   926                                  dev_err(&chip->dev, FW_BUG
   927                                          "TPM interrupt not working, 
polling instead\n");
   928                  } else {
   929                          tpm_tis_probe_irq(chip, intmask);
   930                  }
   931          }
   932  
   933          rc = tpm_chip_register(chip);
   934          if (rc && is_bsw() && priv->ilb_base_addr)
   935                  iounmap(priv->ilb_base_addr);
   936  
   937          if (chip->ops->clk_enable != NULL)
   938                  chip->ops->clk_enable(chip, false);
   939  
   940          return rc;
   941  out_err:
   942          tpm_tis_remove(chip);
   943          if (is_bsw())
   944                  iounmap(priv->ilb_base_addr);
   945  
   946          if (chip->ops->clk_enable != NULL)
   947                  chip->ops->clk_enable(chip, false);
   948  
   949          return rc;
   950  }
   951  EXPORT_SYMBOL_GPL(tpm_tis_core_init);
   952  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to