All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] mei: improve Denverton HSM & IFSI support
@ 2021-08-19 15:04 Lukas Bulwahn
  2021-08-19 21:11   ` kernel test robot
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Lukas Bulwahn @ 2021-08-19 15:04 UTC (permalink / raw)
  To: Tomas Winkler
  Cc: Arnd Bergmann, Greg Kroah-Hartman, Bjorn Helgaas, linux-pci,
	Ionel-Catalin Mititelu, Jiri Kosina, linux-kernel, Lukas Bulwahn

The Intel Denverton chip provides HSM & IFSI. In order to access
HSM & IFSI at the same time, provide two HECI hardware IDs for accessing.

Suggested-by: Ionel-Catalin Mititelu <ionel-catalin.mititelu@intel.com>
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
---
Tomas, please pick this quick helpful extension for the hardware.

 drivers/misc/mei/hw-me-regs.h | 3 ++-
 drivers/misc/mei/pci-me.c     | 1 +
 drivers/pci/quirks.c          | 3 +++
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/mei/hw-me-regs.h b/drivers/misc/mei/hw-me-regs.h
index cb34925e10f1..a436cbde2dd2 100644
--- a/drivers/misc/mei/hw-me-regs.h
+++ b/drivers/misc/mei/hw-me-regs.h
@@ -68,7 +68,8 @@
 #define MEI_DEV_ID_BXT_M      0x1A9A  /* Broxton M */
 #define MEI_DEV_ID_APL_I      0x5A9A  /* Apollo Lake I */
 
-#define MEI_DEV_ID_DNV_IE     0x19E5  /* Denverton IE */
+#define MEI_DEV_ID_DNV_IE     0x19E5  /* Denverton for HECI1 - IFSI */
+#define MEI_DEV_ID_DNV_IE_2   0x19E6  /* Denverton 2 for HECI2 - HSM */
 
 #define MEI_DEV_ID_GLK        0x319A  /* Gemini Lake */
 
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index c3393b383e59..30827cd2a1c2 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -77,6 +77,7 @@ static const struct pci_device_id mei_me_pci_tbl[] = {
 	{MEI_PCI_DEVICE(MEI_DEV_ID_APL_I, MEI_ME_PCH8_CFG)},
 
 	{MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE, MEI_ME_PCH8_CFG)},
+	{MEI_PCI_DEVICE(MEI_DEV_ID_DNV_IE_2, MEI_ME_PCH8_SPS_CFG)},
 
 	{MEI_PCI_DEVICE(MEI_DEV_ID_GLK, MEI_ME_PCH8_CFG)},
 
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6899d6b198af..2ab767ef8469 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4842,6 +4842,9 @@ static const struct pci_dev_acs_enabled {
 	{ PCI_VENDOR_ID_INTEL, 0x15b7, pci_quirk_mf_endpoint_acs },
 	{ PCI_VENDOR_ID_INTEL, 0x15b8, pci_quirk_mf_endpoint_acs },
 	{ PCI_VENDOR_ID_INTEL, PCI_ANY_ID, pci_quirk_rciep_acs },
+	/* Denverton */
+	{ PCI_VENDOR_ID_INTEL, 0x19e5, pci_quirk_mf_endpoint_acs },
+	{ PCI_VENDOR_ID_INTEL, 0x19e6, pci_quirk_mf_endpoint_acs },
 	/* QCOM QDF2xxx root ports */
 	{ PCI_VENDOR_ID_QCOM, 0x0400, pci_quirk_qcom_rp_acs },
 	{ PCI_VENDOR_ID_QCOM, 0x0401, pci_quirk_qcom_rp_acs },
-- 
2.26.2


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
  2021-08-19 15:04 [PATCH v2] mei: improve Denverton HSM & IFSI support Lukas Bulwahn
@ 2021-08-19 21:11   ` kernel test robot
  2021-08-19 21:49   ` kernel test robot
  2021-08-24 13:42 ` Greg Kroah-Hartman
  2 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-19 21:11 UTC (permalink / raw)
  To: Lukas Bulwahn, Tomas Winkler
  Cc: clang-built-linux, kbuild-all, Arnd Bergmann, Greg Kroah-Hartman,
	Bjorn Helgaas, linux-pci, Ionel-Catalin Mititelu, Jiri Kosina,
	linux-kernel, Lukas Bulwahn

[-- Attachment #1: Type: text/plain, Size: 24331 bytes --]

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@intel.com>

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@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 38576 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
@ 2021-08-19 21:11   ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-19 21:11 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 24649 bytes --]

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@intel.com>

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(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38576 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
  2021-08-19 15:04 [PATCH v2] mei: improve Denverton HSM & IFSI support Lukas Bulwahn
@ 2021-08-19 21:49   ` kernel test robot
  2021-08-19 21:49   ` kernel test robot
  2021-08-24 13:42 ` Greg Kroah-Hartman
  2 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-19 21:49 UTC (permalink / raw)
  To: Lukas Bulwahn, Tomas Winkler
  Cc: clang-built-linux, kbuild-all, Arnd Bergmann, Greg Kroah-Hartman,
	Bjorn Helgaas, linux-pci, Ionel-Catalin Mititelu, Jiri Kosina,
	linux-kernel, Lukas Bulwahn

[-- Attachment #1: Type: text/plain, Size: 3548 bytes --]

Hi Lukas,

I love your patch! Yet something to improve:

[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR 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: i386-randconfig-c001-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
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=i386 SHELL=/bin/bash drivers/misc/mei/

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

All errors (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:121:1: error: definition of variable with array type needs an explicit size or an initializer
   MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
   ^
   include/linux/module.h:244:21: note: expanded from macro 'MODULE_DEVICE_TABLE'
   extern typeof(name) __mod_##type##__##name##_device_table               \
                       ^
   <scratch space>:74:1: note: expanded from here
   __mod_pci__mei_me_pci_tbl_device_table
   ^
   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 2 errors generated.


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

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  

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

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 44315 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
@ 2021-08-19 21:49   ` kernel test robot
  0 siblings, 0 replies; 6+ messages in thread
From: kernel test robot @ 2021-08-19 21:49 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 3614 bytes --]

Hi Lukas,

I love your patch! Yet something to improve:

[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR 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: i386-randconfig-c001-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
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=i386 SHELL=/bin/bash drivers/misc/mei/

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

All errors (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:121:1: error: definition of variable with array type needs an explicit size or an initializer
   MODULE_DEVICE_TABLE(pci, mei_me_pci_tbl);
   ^
   include/linux/module.h:244:21: note: expanded from macro 'MODULE_DEVICE_TABLE'
   extern typeof(name) __mod_##type##__##name##_device_table               \
                       ^
   <scratch space>:74:1: note: expanded from here
   __mod_pci__mei_me_pci_tbl_device_table
   ^
   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 2 errors generated.


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

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  

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 44315 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] mei: improve Denverton HSM & IFSI support
  2021-08-19 15:04 [PATCH v2] mei: improve Denverton HSM & IFSI support Lukas Bulwahn
  2021-08-19 21:11   ` kernel test robot
  2021-08-19 21:49   ` kernel test robot
@ 2021-08-24 13:42 ` Greg Kroah-Hartman
  2 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2021-08-24 13:42 UTC (permalink / raw)
  To: Lukas Bulwahn
  Cc: Tomas Winkler, Arnd Bergmann, Bjorn Helgaas, linux-pci,
	Ionel-Catalin Mititelu, Jiri Kosina, linux-kernel

On Thu, Aug 19, 2021 at 05:04:59PM +0200, Lukas Bulwahn wrote:
> The Intel Denverton chip provides HSM & IFSI. In order to access
> HSM & IFSI at the same time, provide two HECI hardware IDs for accessing.
> 
> Suggested-by: Ionel-Catalin Mititelu <ionel-catalin.mititelu@intel.com>
> Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
> ---
> Tomas, please pick this quick helpful extension for the hardware.

How about a version that can build first?  :)

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-08-24 13:51 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-19 15:04 [PATCH v2] mei: improve Denverton HSM & IFSI support Lukas Bulwahn
2021-08-19 21:11 ` kernel test robot
2021-08-19 21:11   ` kernel test robot
2021-08-19 21:49 ` kernel test robot
2021-08-19 21:49   ` kernel test robot
2021-08-24 13:42 ` Greg Kroah-Hartman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.