Re: [PATCH v2] mei: improve Denverton HSM & IFSI support

From: kernel test robot
Date: Thu Aug 19 2021 - 17:12:48 EST


Hi Lukas,

I love your patch! Perhaps something to improve:

[auto build test WARNING on char-misc/char-misc-testing]
[also build test WARNING on pci/next soc/for-next v5.14-rc6 next-20210819]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url: https://github.com/0day-ci/linux/commits/Lukas-Bulwahn/mei-improve-Denverton-HSM-IFSI-support/20210819-230718
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git b2159182dd498fdb0f49e371ccc94efbc12d1f8e
config: x86_64-randconfig-r015-20210818 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project d2b574a4dea5b718e4386bf2e26af0126e5978ce)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/2b98fe0ded99ab7eaf389fa1c91b3d9aad7c93a3
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Lukas-Bulwahn/mei-improve-Denverton-HSM-IFSI-support/20210819-230718
git checkout 2b98fe0ded99ab7eaf389fa1c91b3d9aad7c93a3
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

drivers/misc/mei/pci-me.c:80:39: error: use of undeclared identifier 'MEI_ME_PCH8_SPS_CFG'
{MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE_2, MEI_ME_PCH8_SPS_CFG)},
^
>> drivers/misc/mei/pci-me.c:195:31: warning: shift count >= width of type [-Wshift-count-overflow]
if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
drivers/misc/mei/pci-me.c:196:40: warning: shift count >= width of type [-Wshift-count-overflow]
dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:76:54: note: expanded from macro 'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
^ ~~~
2 warnings and 1 error generated.


vim +195 drivers/misc/mei/pci-me.c

2703d4b2e673cc Tomas Winkler 2013-02-06 25
2703d4b2e673cc Tomas Winkler 2013-02-06 26 /* mei_pci_tbl - PCI Device ID Table */
a05f8f86e49749 Tomas Winkler 2014-03-16 27 static const struct pci_device_id mei_me_pci_tbl[] = {
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 28 {MEI_PCI_DEVICE(MEI_DEV_ID_82946GZ, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 29 {MEI_PCI_DEVICE(MEI_DEV_ID_82G35, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 30 {MEI_PCI_DEVICE(MEI_DEV_ID_82Q965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 31 {MEI_PCI_DEVICE(MEI_DEV_ID_82G965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 32 {MEI_PCI_DEVICE(MEI_DEV_ID_82GM965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 33 {MEI_PCI_DEVICE(MEI_DEV_ID_82GME965, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 34 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q35, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 35 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82G33, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 36 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82Q33, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 37 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_82X38, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 38 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_3200, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 39
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 40 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_6, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 41 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_7, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 42 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_8, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 43 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_9, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 44 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9_10, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 45 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_1, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 46 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_2, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 47 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_3, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 48 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH9M_4, MEI_ME_ICH_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 49
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 50 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_1, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 51 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_2, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 52 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_3, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 53 {MEI_PCI_DEVICE(MEI_DEV_ID_ICH10_4, MEI_ME_ICH10_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 54
f8204f0ddd6296 Alexander Usyskin 2019-10-04 55 {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_1, MEI_ME_PCH6_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 56 {MEI_PCI_DEVICE(MEI_DEV_ID_IBXPK_2, MEI_ME_PCH6_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 57 {MEI_PCI_DEVICE(MEI_DEV_ID_CPT_1, MEI_ME_PCH_CPT_PBG_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 58 {MEI_PCI_DEVICE(MEI_DEV_ID_PBG_1, MEI_ME_PCH_CPT_PBG_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 59 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_1, MEI_ME_PCH7_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 60 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_2, MEI_ME_PCH7_CFG)},
f8204f0ddd6296 Alexander Usyskin 2019-10-04 61 {MEI_PCI_DEVICE(MEI_DEV_ID_PPT_3, MEI_ME_PCH7_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 62 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_H, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 63 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_W, MEI_ME_PCH8_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 64 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_LP, MEI_ME_PCH8_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 65 {MEI_PCI_DEVICE(MEI_DEV_ID_LPT_HR, MEI_ME_PCH8_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 66 {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 67 {MEI_PCI_DEVICE(MEI_DEV_ID_WPT_LP_2, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 68
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 69 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 70 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_2, MEI_ME_PCH8_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 71 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_3, MEI_ME_PCH8_ITOUCH_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 72 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 73 {MEI_PCI_DEVICE(MEI_DEV_ID_SPT_H_2, MEI_ME_PCH8_SPS_4_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 74 {MEI_PCI_DEVICE(MEI_DEV_ID_LBG, MEI_ME_PCH12_SPS_4_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 75
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 76 {MEI_PCI_DEVICE(MEI_DEV_ID_BXT_M, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 77 {MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 78
f7ee8ead151f9d Tomas Winkler 2019-01-13 79 {MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE, MEI_ME_PCH8_CFG)},
2b98fe0ded99ab Lukas Bulwahn 2021-08-19 @80 {MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE_2, MEI_ME_PCH8_SPS_CFG)},
f7ee8ead151f9d Tomas Winkler 2019-01-13 81
688cb67839e852 Tomas Winkler 2017-09-24 82 {MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)},
688cb67839e852 Tomas Winkler 2017-09-24 83
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 84 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP, MEI_ME_PCH8_CFG)},
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 85 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_2, MEI_ME_PCH8_CFG)},
4afc339ef0d259 Tomas Winkler 2020-06-19 86 {MEI_PCI_DEVICE(MEI_DEV_ID_KBP_3, MEI_ME_PCH8_CFG)},
ac182e8abc6f93 Alexander Usyskin 2016-09-12 87
1dbfe7f23bdb72 Alexander Usyskin 2018-11-22 88 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 89 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_LP_3, MEI_ME_PCH8_ITOUCH_CFG)},
f76d77f50b343b Tomas Winkler 2020-06-19 90 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H, MEI_ME_PCH12_SPS_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 91 {MEI_PCI_DEVICE(MEI_DEV_ID_CNP_H_3, MEI_ME_PCH12_SPS_ITOUCH_CFG)},
f8f4aa68a8ae98 Alexander Usyskin 2018-02-18 92
4d86dfd38285c8 Tomas Winkler 2019-10-02 93 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_LP, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 94 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_LP_3, MEI_ME_PCH8_ITOUCH_CFG)},
82b29b9f72afdc Alexander Usyskin 2019-11-05 95 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_V, MEI_ME_PCH12_CFG)},
559e575a8946a6 Tomas Winkler 2020-01-19 96 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H, MEI_ME_PCH12_CFG)},
2f79d3d1f7f088 Alexander Usyskin 2020-07-28 97 {MEI_PCI_DEVICE(MEI_DEV_ID_CMP_H_3, MEI_ME_PCH8_ITOUCH_CFG)},
4d86dfd38285c8 Tomas Winkler 2019-10-02 98
efe814e90b98ae Tomas Winkler 2019-01-24 99 {MEI_PCI_DEVICE(MEI_DEV_ID_ICP_LP, MEI_ME_PCH12_CFG)},
efe814e90b98ae Tomas Winkler 2019-01-24 100
52f6efdf809244 Alexander Usyskin 2019-11-07 101 {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_LP, MEI_ME_PCH15_CFG)},
8c289ea0641652 Alexander Usyskin 2020-06-19 102 {MEI_PCI_DEVICE(MEI_DEV_ID_TGP_H, MEI_ME_PCH15_SPS_CFG)},
587f17407741a5 Tomas Winkler 2019-08-19 103
0db4a15d4c2787 Tomas Winkler 2020-01-24 104 {MEI_PCI_DEVICE(MEI_DEV_ID_JSP_N, MEI_ME_PCH15_CFG)},
0db4a15d4c2787 Tomas Winkler 2020-01-24 105
52f6efdf809244 Alexander Usyskin 2019-11-07 106 {MEI_PCI_DEVICE(MEI_DEV_ID_MCC, MEI_ME_PCH15_CFG)},
1be8624a0cbef7 Alexander Usyskin 2019-07-12 107 {MEI_PCI_DEVICE(MEI_DEV_ID_MCC_4, MEI_ME_PCH8_CFG)},
1be8624a0cbef7 Alexander Usyskin 2019-07-12 108
99397d33b763dc Alexander Usyskin 2020-03-24 109 {MEI_PCI_DEVICE(MEI_DEV_ID_CDF, MEI_ME_PCH8_CFG)},
99397d33b763dc Alexander Usyskin 2020-03-24 110
372726cb3957db Tomas Winkler 2021-01-29 111 {MEI_PCI_DEVICE(MEI_DEV_ID_EBG, MEI_ME_PCH15_SPS_CFG)},
372726cb3957db Tomas Winkler 2021-01-29 112
f7545efaf7950b Alexander Usyskin 2021-01-29 113 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_S, MEI_ME_PCH15_CFG)},
930c922a987a02 Alexander Usyskin 2021-01-29 114 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_LP, MEI_ME_PCH15_CFG)},
0df74278faedf2 Tomas Winkler 2021-04-14 115 {MEI_PCI_DEVICE(MEI_DEV_ID_ADP_P, MEI_ME_PCH15_CFG)},
f7545efaf7950b Alexander Usyskin 2021-01-29 116
2703d4b2e673cc Tomas Winkler 2013-02-06 117 /* required last entry */
2703d4b2e673cc Tomas Winkler 2013-02-06 118 {0, }
2703d4b2e673cc Tomas Winkler 2013-02-06 119 };
2703d4b2e673cc Tomas Winkler 2013-02-06 120
b68301e9acd30f Tomas Winkler 2013-03-27 121 MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
2703d4b2e673cc Tomas Winkler 2013-02-06 122
bbd6d050754731 Rafael J. Wysocki 2014-12-04 123 #ifdef CONFIG_PM
e13fa90ce42d8e Tomas Winkler 2014-03-18 124 static inline void mei_me_set_pm_domain(struct mei_device *dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 125 static inline void mei_me_unset_pm_domain(struct mei_device *dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 126 #else
e13fa90ce42d8e Tomas Winkler 2014-03-18 127 static inline void mei_me_set_pm_domain(struct mei_device *dev) {}
e13fa90ce42d8e Tomas Winkler 2014-03-18 128 static inline void mei_me_unset_pm_domain(struct mei_device *dev) {}
bbd6d050754731 Rafael J. Wysocki 2014-12-04 129 #endif /* CONFIG_PM */
e13fa90ce42d8e Tomas Winkler 2014-03-18 130
261e071acd9bcb Tomas Winkler 2019-11-07 131 static int mei_me_read_fws(const struct mei_device *dev, int where, u32 *val)
261e071acd9bcb Tomas Winkler 2019-11-07 132 {
261e071acd9bcb Tomas Winkler 2019-11-07 133 struct pci_dev *pdev = to_pci_dev(dev->dev);
261e071acd9bcb Tomas Winkler 2019-11-07 134
261e071acd9bcb Tomas Winkler 2019-11-07 135 return pci_read_config_dword(pdev, where, val);
261e071acd9bcb Tomas Winkler 2019-11-07 136 }
261e071acd9bcb Tomas Winkler 2019-11-07 137
2703d4b2e673cc Tomas Winkler 2013-02-06 138 /**
ce23139c6c2ee9 Alexander Usyskin 2014-09-29 139 * mei_me_quirk_probe - probe for devices that doesn't valid ME interface
393b148f9d0e70 Masanari Iida 2013-04-05 140 *
2703d4b2e673cc Tomas Winkler 2013-02-06 141 * @pdev: PCI device structure
c919951d940f28 Tomas Winkler 2014-05-13 142 * @cfg: per generation config
2703d4b2e673cc Tomas Winkler 2013-02-06 143 *
a8605ea2c20c2b Alexander Usyskin 2014-09-29 144 * Return: true if ME Interface is valid, false otherwise
2703d4b2e673cc Tomas Winkler 2013-02-06 145 */
b68301e9acd30f Tomas Winkler 2013-03-27 146 static bool mei_me_quirk_probe(struct pci_dev *pdev,
c919951d940f28 Tomas Winkler 2014-05-13 147 const struct mei_cfg *cfg)
2703d4b2e673cc Tomas Winkler 2013-02-06 148 {
c919951d940f28 Tomas Winkler 2014-05-13 149 if (cfg->quirk_probe && cfg->quirk_probe(pdev)) {
c919951d940f28 Tomas Winkler 2014-05-13 150 dev_info(&pdev->dev, "Device doesn't have valid ME Interface\n");
c919951d940f28 Tomas Winkler 2014-05-13 151 return false;
2703d4b2e673cc Tomas Winkler 2013-02-06 152 }
5e6533a6f52f1a Tomas Winkler 2014-03-25 153
2703d4b2e673cc Tomas Winkler 2013-02-06 154 return true;
2703d4b2e673cc Tomas Winkler 2013-02-06 155 }
c919951d940f28 Tomas Winkler 2014-05-13 156
2703d4b2e673cc Tomas Winkler 2013-02-06 157 /**
ce23139c6c2ee9 Alexander Usyskin 2014-09-29 158 * mei_me_probe - Device Initialization Routine
2703d4b2e673cc Tomas Winkler 2013-02-06 159 *
2703d4b2e673cc Tomas Winkler 2013-02-06 160 * @pdev: PCI device structure
2703d4b2e673cc Tomas Winkler 2013-02-06 161 * @ent: entry in kcs_pci_tbl
2703d4b2e673cc Tomas Winkler 2013-02-06 162 *
a8605ea2c20c2b Alexander Usyskin 2014-09-29 163 * Return: 0 on success, <0 on failure.
2703d4b2e673cc Tomas Winkler 2013-02-06 164 */
b68301e9acd30f Tomas Winkler 2013-03-27 165 static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
2703d4b2e673cc Tomas Winkler 2013-02-06 166 {
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 167 const struct mei_cfg *cfg;
2703d4b2e673cc Tomas Winkler 2013-02-06 168 struct mei_device *dev;
52c34561415b42 Tomas Winkler 2013-02-06 169 struct mei_me_hw *hw;
1fa55b4e0e161b Alexander Usyskin 2015-08-02 170 unsigned int irqflags;
2703d4b2e673cc Tomas Winkler 2013-02-06 171 int err;
2703d4b2e673cc Tomas Winkler 2013-02-06 172
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 173 cfg = mei_me_get_cfg(ent->driver_data);
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 174 if (!cfg)
f5ac3c49ff0b36 Tomas Winkler 2017-06-14 175 return -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 176
c919951d940f28 Tomas Winkler 2014-05-13 177 if (!mei_me_quirk_probe(pdev, cfg))
c919951d940f28 Tomas Winkler 2014-05-13 178 return -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 179
2703d4b2e673cc Tomas Winkler 2013-02-06 180 /* enable pci dev */
f8a096059fc5f7 Tomas Winkler 2017-01-26 181 err = pcim_enable_device(pdev);
2703d4b2e673cc Tomas Winkler 2013-02-06 182 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 183 dev_err(&pdev->dev, "failed to enable pci device.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 184 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 185 }
2703d4b2e673cc Tomas Winkler 2013-02-06 186 /* set PCI host mastering */
2703d4b2e673cc Tomas Winkler 2013-02-06 187 pci_set_master(pdev);
f8a096059fc5f7 Tomas Winkler 2017-01-26 188 /* pci request regions and mapping IO device memory for mei driver */
f8a096059fc5f7 Tomas Winkler 2017-01-26 189 err = pcim_iomap_regions(pdev, BIT(0), KBUILD_MODNAME);
2703d4b2e673cc Tomas Winkler 2013-02-06 190 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 191 dev_err(&pdev->dev, "failed to get pci regions.\n");
f8a096059fc5f7 Tomas Winkler 2017-01-26 192 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 193 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 194
3ecfb168a51ddf Tomas Winkler 2013-12-17 @195 if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)) ||
3ecfb168a51ddf Tomas Winkler 2013-12-17 196 dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(64))) {
3ecfb168a51ddf Tomas Winkler 2013-12-17 197
3ecfb168a51ddf Tomas Winkler 2013-12-17 198 err = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler 2013-12-17 199 if (err)
3ecfb168a51ddf Tomas Winkler 2013-12-17 200 err = dma_set_coherent_mask(&pdev->dev,
3ecfb168a51ddf Tomas Winkler 2013-12-17 201 DMA_BIT_MASK(32));
3ecfb168a51ddf Tomas Winkler 2013-12-17 202 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 203 if (err) {
3ecfb168a51ddf Tomas Winkler 2013-12-17 204 dev_err(&pdev->dev, "No usable DMA configuration, aborting\n");
f8a096059fc5f7 Tomas Winkler 2017-01-26 205 goto end;
3ecfb168a51ddf Tomas Winkler 2013-12-17 206 }
3ecfb168a51ddf Tomas Winkler 2013-12-17 207
2703d4b2e673cc Tomas Winkler 2013-02-06 208 /* allocates and initializes the mei dev structure */
907b471ca228a5 Tomas Winkler 2019-11-07 209 dev = mei_me_dev_init(&pdev->dev, cfg);
2703d4b2e673cc Tomas Winkler 2013-02-06 210 if (!dev) {
2703d4b2e673cc Tomas Winkler 2013-02-06 211 err = -ENOMEM;
f8a096059fc5f7 Tomas Winkler 2017-01-26 212 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 213 }
52c34561415b42 Tomas Winkler 2013-02-06 214 hw = to_me_hw(dev);
f8a096059fc5f7 Tomas Winkler 2017-01-26 215 hw->mem_addr = pcim_iomap_table(pdev)[0];
261e071acd9bcb Tomas Winkler 2019-11-07 216 hw->read_fws = mei_me_read_fws;
f8a096059fc5f7 Tomas Winkler 2017-01-26 217
2703d4b2e673cc Tomas Winkler 2013-02-06 218 pci_enable_msi(pdev);
2703d4b2e673cc Tomas Winkler 2013-02-06 219
fec874a81b3ec2 Benjamin Lee 2020-04-17 220 hw->irq = pdev->irq;
fec874a81b3ec2 Benjamin Lee 2020-04-17 221
2703d4b2e673cc Tomas Winkler 2013-02-06 222 /* request and enable interrupt */
1fa55b4e0e161b Alexander Usyskin 2015-08-02 223 irqflags = pci_dev_msi_enabled(pdev) ? IRQF_ONESHOT : IRQF_SHARED;
1fa55b4e0e161b Alexander Usyskin 2015-08-02 224
2703d4b2e673cc Tomas Winkler 2013-02-06 225 err = request_threaded_irq(pdev->irq,
06ecd645980096 Tomas Winkler 2013-02-06 226 mei_me_irq_quick_handler,
06ecd645980096 Tomas Winkler 2013-02-06 227 mei_me_irq_thread_handler,
1fa55b4e0e161b Alexander Usyskin 2015-08-02 228 irqflags, KBUILD_MODNAME, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 229 if (err) {
2703d4b2e673cc Tomas Winkler 2013-02-06 230 dev_err(&pdev->dev, "request_threaded_irq failure. irq = %d\n",
2703d4b2e673cc Tomas Winkler 2013-02-06 231 pdev->irq);
f8a096059fc5f7 Tomas Winkler 2017-01-26 232 goto end;
2703d4b2e673cc Tomas Winkler 2013-02-06 233 }
2703d4b2e673cc Tomas Winkler 2013-02-06 234
c4d589be4405d4 Tomas Winkler 2013-03-27 235 if (mei_start(dev)) {
2703d4b2e673cc Tomas Winkler 2013-02-06 236 dev_err(&pdev->dev, "init hw failure.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 237 err = -ENODEV;
2703d4b2e673cc Tomas Winkler 2013-02-06 238 goto release_irq;
2703d4b2e673cc Tomas Winkler 2013-02-06 239 }
2703d4b2e673cc Tomas Winkler 2013-02-06 240
180ea05bcedbd6 Tomas Winkler 2014-03-18 241 pm_runtime_set_autosuspend_delay(&pdev->dev, MEI_ME_RPM_TIMEOUT);
180ea05bcedbd6 Tomas Winkler 2014-03-18 242 pm_runtime_use_autosuspend(&pdev->dev);
180ea05bcedbd6 Tomas Winkler 2014-03-18 243
f3d8e8788b4efb Alexander Usyskin 2014-06-23 244 err = mei_register(dev, &pdev->dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 245 if (err)
1f7e489a285c8b Alexander Usyskin 2016-02-07 246 goto stop;
2703d4b2e673cc Tomas Winkler 2013-02-06 247
2703d4b2e673cc Tomas Winkler 2013-02-06 248 pci_set_drvdata(pdev, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 249
557909e195aea2 Alexander Usyskin 2017-08-03 250 /*
557909e195aea2 Alexander Usyskin 2017-08-03 251 * MEI requires to resume from runtime suspend mode
557909e195aea2 Alexander Usyskin 2017-08-03 252 * in order to perform link reset flow upon system suspend.
557909e195aea2 Alexander Usyskin 2017-08-03 253 */
e07515563d010d Rafael J. Wysocki 2020-04-18 254 dev_pm_set_driver_flags(&pdev->dev, DPM_FLAG_NO_DIRECT_COMPLETE);
557909e195aea2 Alexander Usyskin 2017-08-03 255
e13fa90ce42d8e Tomas Winkler 2014-03-18 256 /*
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 257 * ME maps runtime suspend/resume to D0i states,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 258 * hence we need to go around native PCI runtime service which
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 259 * eventually brings the device into D3cold/hot state,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 260 * but the mei device cannot wake up from D3 unlike from D0i3.
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 261 * To get around the PCI device native runtime pm,
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 262 * ME uses runtime pm domain handlers which take precedence
b42dc0635bf0a6 Alexander Usyskin 2017-09-26 263 * over the driver's pm handlers.
e13fa90ce42d8e Tomas Winkler 2014-03-18 264 */
e13fa90ce42d8e Tomas Winkler 2014-03-18 265 mei_me_set_pm_domain(dev);
e13fa90ce42d8e Tomas Winkler 2014-03-18 266
cc365dcf0e5627 Tomas Winkler 2018-01-02 267 if (mei_pg_is_enabled(dev)) {
180ea05bcedbd6 Tomas Winkler 2014-03-18 268 pm_runtime_put_noidle(&pdev->dev);
cc365dcf0e5627 Tomas Winkler 2018-01-02 269 if (hw->d0i3_supported)
cc365dcf0e5627 Tomas Winkler 2018-01-02 270 pm_runtime_allow(&pdev->dev);
cc365dcf0e5627 Tomas Winkler 2018-01-02 271 }
180ea05bcedbd6 Tomas Winkler 2014-03-18 272
c4e87b525936da Alexander Usyskin 2013-10-21 273 dev_dbg(&pdev->dev, "initialization successful.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 274
2703d4b2e673cc Tomas Winkler 2013-02-06 275 return 0;
2703d4b2e673cc Tomas Winkler 2013-02-06 276
1f7e489a285c8b Alexander Usyskin 2016-02-07 277 stop:
1f7e489a285c8b Alexander Usyskin 2016-02-07 278 mei_stop(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 279 release_irq:
dc844b0d99b853 Tomas Winkler 2013-11-11 280 mei_cancel_work(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 281 mei_disable_interrupts(dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 282 free_irq(pdev->irq, dev);
2703d4b2e673cc Tomas Winkler 2013-02-06 283 end:
2703d4b2e673cc Tomas Winkler 2013-02-06 284 dev_err(&pdev->dev, "initialization failed.\n");
2703d4b2e673cc Tomas Winkler 2013-02-06 285 return err;
2703d4b2e673cc Tomas Winkler 2013-02-06 286 }
2703d4b2e673cc Tomas Winkler 2013-02-06 287

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip