tree:
https://github.com/0day-ci/linux/commits/UPDATE-20191113-052754/Jerry-Sni...
head: 4d007703f2b5e89029ba74d0239292d7212fd81a
commit: 4d007703f2b5e89029ba74d0239292d7212fd81a [1/1] tpm_tis: turn on TPM before calling
tpm_get_timeouts
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 7.4.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 4d007703f2b5e89029ba74d0239292d7212fd81a
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=sh
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp(a)intel.com>
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:1060:4: error: implicit
declaration of function 'tpm_stop_chip'; did you mean 'to_tpm_chip'?
[-Werror=implicit-function-declaration]
tpm_stop_chip(chip);
^~~~~~~~~~~~~
to_tpm_chip
cc1: some warnings being treated as errors
vim +1060 drivers/char/tpm/tpm_tis_core.c
951
952 chip->hwrng.quality = priv->rng_quality;
953
954 /* Maximum timeouts */
955 chip->timeout_a = msecs_to_jiffies(TIS_TIMEOUT_A_MAX);
956 chip->timeout_b = msecs_to_jiffies(TIS_TIMEOUT_B_MAX);
957 chip->timeout_c = msecs_to_jiffies(TIS_TIMEOUT_C_MAX);
958 chip->timeout_d = msecs_to_jiffies(TIS_TIMEOUT_D_MAX);
959 priv->phy_ops = phy_ops;
960 dev_set_drvdata(&chip->dev, priv);
961
962 if (is_bsw()) {
963 priv->ilb_base_addr = ioremap(INTEL_LEGACY_BLK_BASE_ADDR,
964 ILB_REMAP_SIZE);
965 if (!priv->ilb_base_addr)
966 return -ENOMEM;
967
968 clkrun_val = ioread32(priv->ilb_base_addr + LPC_CNTRL_OFFSET);
969 /* Check if CLKRUN# is already not enabled in the LPC bus */
970 if (!(clkrun_val & LPC_CLKRUN_EN)) {
971 iounmap(priv->ilb_base_addr);
972 priv->ilb_base_addr = NULL;
973 }
974 }
975
976 if (chip->ops->clk_enable != NULL)
977 chip->ops->clk_enable(chip, true);
978
979 if (wait_startup(chip, 0) != 0) {
980 rc = -ENODEV;
981 goto out_err;
982 }
983
984 /* Take control of the TPM's interrupt hardware and shut it off */
985 rc = tpm_tis_read32(priv, TPM_INT_ENABLE(priv->locality), &intmask);
986 if (rc < 0)
987 goto out_err;
988
989 intmask |= TPM_INTF_CMD_READY_INT | TPM_INTF_LOCALITY_CHANGE_INT |
990 TPM_INTF_DATA_AVAIL_INT | TPM_INTF_STS_VALID_INT;
991 intmask &= ~TPM_GLOBAL_INT_ENABLE;
992 tpm_tis_write32(priv, TPM_INT_ENABLE(priv->locality), intmask);
993
994 rc = tpm_chip_start(chip);
995 if (rc)
996 goto out_err;
997 rc = tpm2_probe(chip);
998 tpm_chip_stop(chip);
999 if (rc)
1000 goto out_err;
1001
1002 rc = tpm_tis_read32(priv, TPM_DID_VID(0), &vendor);
1003 if (rc < 0)
1004 goto out_err;
1005
1006 priv->manufacturer_id = vendor;
1007
1008 rc = tpm_tis_read8(priv, TPM_RID(0), &rid);
1009 if (rc < 0)
1010 goto out_err;
1011
1012 dev_info(dev, "%s TPM (device-id 0x%X, rev-id %d)\n",
1013 (chip->flags & TPM_CHIP_FLAG_TPM2) ? "2.0" : "1.2",
1014 vendor >> 16, rid);
1015
1016 probe = probe_itpm(chip);
1017 if (probe < 0) {
1018 rc = -ENODEV;
1019 goto out_err;
1020 }
1021
1022 /* Figure out the capabilities */
1023 rc = tpm_tis_read32(priv, TPM_INTF_CAPS(priv->locality), &intfcaps);
1024 if (rc < 0)
1025 goto out_err;
1026
1027 dev_dbg(dev, "TPM interface capabilities (0x%x):\n",
1028 intfcaps);
1029 if (intfcaps & TPM_INTF_BURST_COUNT_STATIC)
1030 dev_dbg(dev, "\tBurst Count Static\n");
1031 if (intfcaps & TPM_INTF_CMD_READY_INT)
1032 dev_dbg(dev, "\tCommand Ready Int Support\n");
1033 if (intfcaps & TPM_INTF_INT_EDGE_FALLING)
1034 dev_dbg(dev, "\tInterrupt Edge Falling\n");
1035 if (intfcaps & TPM_INTF_INT_EDGE_RISING)
1036 dev_dbg(dev, "\tInterrupt Edge Rising\n");
1037 if (intfcaps & TPM_INTF_INT_LEVEL_LOW)
1038 dev_dbg(dev, "\tInterrupt Level Low\n");
1039 if (intfcaps & TPM_INTF_INT_LEVEL_HIGH)
1040 dev_dbg(dev, "\tInterrupt Level High\n");
1041 if (intfcaps & TPM_INTF_LOCALITY_CHANGE_INT)
1042 dev_dbg(dev, "\tLocality Change Int Support\n");
1043 if (intfcaps & TPM_INTF_STS_VALID_INT)
1044 dev_dbg(dev, "\tSts Valid Int Support\n");
1045 if (intfcaps & TPM_INTF_DATA_AVAIL_INT)
1046 dev_dbg(dev, "\tData Avail Int Support\n");
1047
1048 /* INTERRUPT Setup */
1049 init_waitqueue_head(&priv->read_queue);
1050 init_waitqueue_head(&priv->int_queue);
1051 if (irq != -1) {
1052 /* Before doing irq testing issue a command to the TPM in polling mode
1053 * to make sure it works. May as well use that command to set the
1054 * proper timeouts for the driver.
1055 */
1056 tpm_chip_start(chip);
1057 if (tpm_get_timeouts(chip)) {
1058 dev_err(dev, "Could not get TPM timeouts and durations\n");
1059 rc = -ENODEV;
1060 tpm_stop_chip(chip);
1061 goto out_err;
1062 }
1063
1064 chip->flags |= TPM_CHIP_FLAG_IRQ;
1065 if (irq) {
1066 tpm_tis_probe_irq_single(chip, intmask, IRQF_SHARED,
1067 irq);
1068 if (!(chip->flags & TPM_CHIP_FLAG_IRQ))
1069 dev_err(&chip->dev, FW_BUG
1070 "TPM interrupt not working, polling instead\n");
1071 } else {
1072 tpm_tis_probe_irq(chip, intmask);
1073 }
1074 tpm_chip_stop(chip);
1075 }
1076
1077 rc = tpm_chip_register(chip);
1078 if (rc)
1079 goto out_err;
1080
1081 if (chip->ops->clk_enable != NULL)
1082 chip->ops->clk_enable(chip, false);
1083
1084 return 0;
1085 out_err:
1086 if ((chip->ops != NULL) && (chip->ops->clk_enable != NULL))
1087 chip->ops->clk_enable(chip, false);
1088
1089 tpm_tis_remove(chip);
1090
1091 return rc;
1092 }
1093 EXPORT_SYMBOL_GPL(tpm_tis_core_init);
1094
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation