diff mbox

[v2] dma: make platform drivers depend on their associated SoC

Message ID 20161126095100.15053-1-pbrobinson@gmail.com (mailing list archive)
State Changes Requested
Headers show

Commit Message

Peter Robinson Nov. 26, 2016, 9:51 a.m. UTC
There's not much point in enabling SoC specific DMA drivers for
platform drivers unless their actual SoC is enabled. They're not
useful without it. Add lashings of COMPILE_TEST to ensure continued
build and test coverage.

Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
 drivers/dma/Kconfig | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

v1 -> v2
	Add more COMPILE_TEST

Comments

kernel test robot Nov. 26, 2016, 11:52 a.m. UTC | #1
Hi Peter,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.9-rc6 next-20161125]
[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/Peter-Robinson/dma-make-platform-drivers-depend-on-their-associated-SoC/20161126-175336
config: i386-allmodconfig (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):


vim +/find_next_zero_bit +56 include/linux/bitops.h

3e037454 Shannon Nelson 2007-10-16  40  	     (bit) < (size);					\
3e037454 Shannon Nelson 2007-10-16  41  	     (bit) = find_next_bit((addr), (size), (bit) + 1))
3e037454 Shannon Nelson 2007-10-16  42  
1e2ad28f Robert Richter 2011-11-18  43  /* same as for_each_set_bit() but use bit as value to start with */
307b1cd7 Akinobu Mita   2012-03-23  44  #define for_each_set_bit_from(bit, addr, size) \
1e2ad28f Robert Richter 2011-11-18  45  	for ((bit) = find_next_bit((addr), (size), (bit));	\
1e2ad28f Robert Richter 2011-11-18  46  	     (bit) < (size);					\
1e2ad28f Robert Richter 2011-11-18  47  	     (bit) = find_next_bit((addr), (size), (bit) + 1))
1e2ad28f Robert Richter 2011-11-18  48  
03f4a822 Akinobu Mita   2012-03-23  49  #define for_each_clear_bit(bit, addr, size) \
03f4a822 Akinobu Mita   2012-03-23  50  	for ((bit) = find_first_zero_bit((addr), (size));	\
03f4a822 Akinobu Mita   2012-03-23  51  	     (bit) < (size);					\
03f4a822 Akinobu Mita   2012-03-23  52  	     (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
03f4a822 Akinobu Mita   2012-03-23  53  
03f4a822 Akinobu Mita   2012-03-23  54  /* same as for_each_clear_bit() but use bit as value to start with */
03f4a822 Akinobu Mita   2012-03-23  55  #define for_each_clear_bit_from(bit, addr, size) \
03f4a822 Akinobu Mita   2012-03-23 @56  	for ((bit) = find_next_zero_bit((addr), (size), (bit));	\
03f4a822 Akinobu Mita   2012-03-23  57  	     (bit) < (size);					\
03f4a822 Akinobu Mita   2012-03-23  58  	     (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
03f4a822 Akinobu Mita   2012-03-23  59  
1a1d48a4 Denys Vlasenko 2015-08-04  60  static inline int get_bitmask_order(unsigned int count)
^1da177e Linus Torvalds 2005-04-16  61  {
^1da177e Linus Torvalds 2005-04-16  62  	int order;
^1da177e Linus Torvalds 2005-04-16  63  
^1da177e Linus Torvalds 2005-04-16  64  	order = fls(count);

:::::: The code at line 56 was first introduced by commit
:::::: 03f4a8226c2f9c14361f75848d1e93139bab90c4 bitops: introduce for_each_clear_bit()

:::::: TO: Akinobu Mita <akinobu.mita@gmail.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot Nov. 26, 2016, 12:36 p.m. UTC | #2
Hi Peter,

[auto build test ERROR on linus/master]
[also build test ERROR on v4.9-rc6 next-20161125]
[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/Peter-Robinson/dma-make-platform-drivers-depend-on-their-associated-SoC/20161126-175336
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm 

All errors (new ones prefixed by >>):

   In file included from drivers/dma/ioat/dca.c:32:0:
   drivers/dma/ioat/dma.h: In function 'ioat_chansts':
   drivers/dma/ioat/dma.h:249:9: error: implicit declaration of function 'readq' [-Werror=implicit-function-declaration]
     return readq(ioat_chan->reg_base + IOAT_CHANSTS_OFFSET);
            ^~~~~
   drivers/dma/ioat/dca.c: In function 'dca_enabled_in_bios':
>> drivers/dma/ioat/dca.c:86:18: error: implicit declaration of function 'cpuid_eax' [-Werror=implicit-function-declaration]
     cpuid_level_9 = cpuid_eax(9);
                     ^~~~~~~~~
   drivers/dma/ioat/dca.c: In function 'system_has_dca_enabled':
>> drivers/dma/ioat/dca.c:96:6: error: implicit declaration of function 'boot_cpu_has' [-Werror=implicit-function-declaration]
     if (boot_cpu_has(X86_FEATURE_DCA))
         ^~~~~~~~~~~~
>> drivers/dma/ioat/dca.c:96:19: error: 'X86_FEATURE_DCA' undeclared (first use in this function)
     if (boot_cpu_has(X86_FEATURE_DCA))
                      ^~~~~~~~~~~~~~~
   drivers/dma/ioat/dca.c:96:19: note: each undeclared identifier is reported only once for each function it appears in
   drivers/dma/ioat/dca.c: In function 'ioat_dca_get_tag':
>> drivers/dma/ioat/dca.c:207:12: error: implicit declaration of function 'cpu_physical_id' [-Werror=implicit-function-declaration]
     apic_id = cpu_physical_id(cpu);
               ^~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/cpuid_eax +86 drivers/dma/ioat/dca.c

2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   26  #ifndef CONFIG_SMP
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   27  #include <asm/smp.h>
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   28  #undef cpu_physical_id
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   29  #define cpu_physical_id(cpu) (cpuid_ebx(1) >> 24)
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   30  #endif
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   31  
584ec227 drivers/dma/ioat/dca.c Dan Williams     2009-07-28  @32  #include "dma.h"
584ec227 drivers/dma/ioat/dca.c Dan Williams     2009-07-28   33  #include "registers.h"
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   34  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   35  /*
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   36   * Bit 7 of a tag map entry is the "valid" bit, if it is set then bits 0:6
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   37   * contain the bit number of the APIC ID to map into the DCA tag.  If the valid
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   38   * bit is not set, then the value must be 0 or 1 and defines the bit in the tag.
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   39   */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   40  #define DCA_TAG_MAP_VALID 0x80
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   41  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   42  #define DCA3_TAG_MAP_BIT_TO_INV 0x80
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   43  #define DCA3_TAG_MAP_BIT_TO_SEL 0x40
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   44  #define DCA3_TAG_MAP_LITERAL_VAL 0x1
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   45  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   46  #define DCA_TAG_MAP_MASK 0xDF
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22   47  
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   48  /* expected tag map bytes for I/OAT ver.2 */
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   49  #define DCA2_TAG_MAP_BYTE0 0x80
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   50  #define DCA2_TAG_MAP_BYTE1 0x0
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   51  #define DCA2_TAG_MAP_BYTE2 0x81
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   52  #define DCA2_TAG_MAP_BYTE3 0x82
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   53  #define DCA2_TAG_MAP_BYTE4 0x82
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   54  
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   55  /* verify if tag map matches expected values */
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   56  static inline int dca2_tag_map_valid(u8 *tag_map)
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   57  {
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   58  	return ((tag_map[0] == DCA2_TAG_MAP_BYTE0) &&
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   59  		(tag_map[1] == DCA2_TAG_MAP_BYTE1) &&
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   60  		(tag_map[2] == DCA2_TAG_MAP_BYTE2) &&
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   61  		(tag_map[3] == DCA2_TAG_MAP_BYTE3) &&
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   62  		(tag_map[4] == DCA2_TAG_MAP_BYTE4));
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   63  }
49bc4636 drivers/dma/ioat_dca.c Maciej Sosnowski 2009-02-26   64  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   65  /*
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   66   * "Legacy" DCA systems do not implement the DCA register set in the
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   67   * I/OAT device.  Software needs direct support for their tag mappings.
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   68   */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   69  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   70  #define APICID_BIT(x)		(DCA_TAG_MAP_VALID | (x))
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   71  #define IOAT_TAG_MAP_LEN	8
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   72  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   73  /* pack PCI B/D/F into a u16 */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   74  static inline u16 dcaid_from_pcidev(struct pci_dev *pci)
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   75  {
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   76  	return (pci->bus->number << 8) | pci->devfn;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   77  }
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   78  
5149fd01 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-18   79  static int dca_enabled_in_bios(struct pci_dev *pdev)
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   80  {
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   81  	/* CPUID level 9 returns DCA configuration */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   82  	/* Bit 0 indicates DCA enabled by the BIOS */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   83  	unsigned long cpuid_level_9;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   84  	int res;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   85  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  @86  	cpuid_level_9 = cpuid_eax(9);
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   87  	res = test_bit(0, &cpuid_level_9);
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   88  	if (!res)
e22dde99 drivers/dma/ioat/dca.c Dan Williams     2009-11-17   89  		dev_dbg(&pdev->dev, "DCA is disabled in BIOS\n");
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   90  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   91  	return res;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   92  }
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   93  
228c4f5c drivers/dma/ioat/dca.c Dan Williams     2009-11-19   94  int system_has_dca_enabled(struct pci_dev *pdev)
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   95  {
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  @96  	if (boot_cpu_has(X86_FEATURE_DCA))
5149fd01 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-18   97  		return dca_enabled_in_bios(pdev);
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16   98  
e22dde99 drivers/dma/ioat/dca.c Dan Williams     2009-11-17   99  	dev_dbg(&pdev->dev, "boot cpu doesn't have X86_FEATURE_DCA\n");
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  100  	return 0;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  101  }
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  102  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  103  struct ioat_dca_slot {
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  104  	struct pci_dev *pdev;	/* requester device */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  105  	u16 rid;		/* requester id, as used by IOAT */
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  106  };
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  107  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  108  #define IOAT_DCA_MAX_REQ 6
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  109  #define IOAT3_DCA_MAX_REQ 2
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  110  
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  111  struct ioat_dca_priv {
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  112  	void __iomem		*iobase;
53a0c98e drivers/dma/ioat_dca.c Al Viro          2008-03-29  113  	void __iomem		*dca_base;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  114  	int			 max_requesters;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  115  	int			 requester_count;
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  116  	u8			 tag_map[IOAT_TAG_MAP_LEN];
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  117  	struct ioat_dca_slot 	 req_slots[0];
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  118  };
2ed6dc34 drivers/dma/ioat_dca.c Shannon Nelson   2007-10-16  119  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  120  static int ioat_dca_dev_managed(struct dca_provider *dca,
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  121  				struct device *dev)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  122  {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  123  	struct ioat_dca_priv *ioatdca = dca_priv(dca);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  124  	struct pci_dev *pdev;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  125  	int i;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  126  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  127  	pdev = to_pci_dev(dev);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  128  	for (i = 0; i < ioatdca->max_requesters; i++) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  129  		if (ioatdca->req_slots[i].pdev == pdev)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  130  			return 1;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  131  	}
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  132  	return 0;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  133  }
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  134  
3372de58 drivers/dma/ioat/dca.c Dave Jiang       2015-08-11  135  static int ioat_dca_add_requester(struct dca_provider *dca, struct device *dev)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  136  {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  137  	struct ioat_dca_priv *ioatdca = dca_priv(dca);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  138  	struct pci_dev *pdev;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  139  	int i;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  140  	u16 id;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  141  	u16 global_req_table;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  142  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  143  	/* This implementation only supports PCI-Express */
1fde2548 drivers/dma/ioat/dca.c Yijing Wang      2013-12-05  144  	if (!dev_is_pci(dev))
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  145  		return -ENODEV;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  146  	pdev = to_pci_dev(dev);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  147  	id = dcaid_from_pcidev(pdev);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  148  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  149  	if (ioatdca->requester_count == ioatdca->max_requesters)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  150  		return -ENODEV;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  151  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  152  	for (i = 0; i < ioatdca->max_requesters; i++) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  153  		if (ioatdca->req_slots[i].pdev == NULL) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  154  			/* found an empty slot */
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  155  			ioatdca->requester_count++;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  156  			ioatdca->req_slots[i].pdev = pdev;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  157  			ioatdca->req_slots[i].rid = id;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  158  			global_req_table =
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  159  			      readw(ioatdca->dca_base + IOAT3_DCA_GREQID_OFFSET);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  160  			writel(id | IOAT_DCA_GREQID_VALID,
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  161  			       ioatdca->iobase + global_req_table + (i * 4));
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  162  			return i;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  163  		}
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  164  	}
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  165  	/* Error, ioatdma->requester_count is out of whack */
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  166  	return -EFAULT;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  167  }
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  168  
3372de58 drivers/dma/ioat/dca.c Dave Jiang       2015-08-11  169  static int ioat_dca_remove_requester(struct dca_provider *dca,
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  170  				      struct device *dev)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  171  {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  172  	struct ioat_dca_priv *ioatdca = dca_priv(dca);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  173  	struct pci_dev *pdev;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  174  	int i;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  175  	u16 global_req_table;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  176  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  177  	/* This implementation only supports PCI-Express */
1fde2548 drivers/dma/ioat/dca.c Yijing Wang      2013-12-05  178  	if (!dev_is_pci(dev))
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  179  		return -ENODEV;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  180  	pdev = to_pci_dev(dev);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  181  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  182  	for (i = 0; i < ioatdca->max_requesters; i++) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  183  		if (ioatdca->req_slots[i].pdev == pdev) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  184  			global_req_table =
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  185  			      readw(ioatdca->dca_base + IOAT3_DCA_GREQID_OFFSET);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  186  			writel(0, ioatdca->iobase + global_req_table + (i * 4));
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  187  			ioatdca->req_slots[i].pdev = NULL;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  188  			ioatdca->req_slots[i].rid = 0;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  189  			ioatdca->requester_count--;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  190  			return i;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  191  		}
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  192  	}
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  193  	return -ENODEV;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  194  }
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  195  
3372de58 drivers/dma/ioat/dca.c Dave Jiang       2015-08-11  196  static u8 ioat_dca_get_tag(struct dca_provider *dca,
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  197  			    struct device *dev,
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  198  			    int cpu)
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  199  {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  200  	u8 tag;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  201  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  202  	struct ioat_dca_priv *ioatdca = dca_priv(dca);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  203  	int i, apic_id, bit, value;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  204  	u8 entry;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  205  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  206  	tag = 0;
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22 @207  	apic_id = cpu_physical_id(cpu);
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  208  
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  209  	for (i = 0; i < IOAT_TAG_MAP_LEN; i++) {
7f1b358a drivers/dma/ioat_dca.c Maciej Sosnowski 2008-07-22  210  		entry = ioatdca->tag_map[i];

:::::: The code at line 86 was first introduced by commit
:::::: 2ed6dc34f9ed39bb8e4c81ea1056f0ba56315841 I/OAT: Add DCA services

:::::: TO: Shannon Nelson <shannon.nelson@intel.com>
:::::: CC: Linus Torvalds <torvalds@woody.linux-foundation.org>

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

Patch

diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index af63a6b..33280a2 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -108,7 +108,7 @@  config COH901318
 
 config DMA_BCM2835
 	tristate "BCM2835 DMA engine support"
-	depends on ARCH_BCM2835
+	depends on ARCH_BCM2835 || COMPILE_TEST
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
 
@@ -147,7 +147,7 @@  config DMA_SA11X0
 
 config DMA_SUN4I
 	tristate "Allwinner A10 DMA SoCs support"
-	depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
+	depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I || COMPILE_TEST
 	default (MACH_SUN4I || MACH_SUN5I || MACH_SUN7I)
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
@@ -184,7 +184,7 @@  config FSL_DMA
 
 config FSL_EDMA
 	tristate "Freescale eDMA engine support"
-	depends on OF
+	depends on OF && (FSL_SOC || COMPILE_TEST)
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
 	help
@@ -230,6 +230,7 @@  config IMX_SDMA
 
 config INTEL_IDMA64
 	tristate "Intel integrated DMA 64-bit support"
+	depends on X86 || COMPILE_TEST
 	select DMA_ENGINE
 	select DMA_VIRTUAL_CHANNELS
 	help
@@ -238,7 +239,7 @@  config INTEL_IDMA64
 
 config INTEL_IOATDMA
 	tristate "Intel I/OAT DMA support"
-	depends on PCI && X86_64
+	depends on PCI && (X86_64 || COMPILE_TEST)
 	select DMA_ENGINE
 	select DMA_ENGINE_RAID
 	select DCA
@@ -252,7 +253,7 @@  config INTEL_IOATDMA
 
 config INTEL_IOP_ADMA
 	tristate "Intel IOP ADMA support"
-	depends on ARCH_IOP32X || ARCH_IOP33X || ARCH_IOP13XX
+	depends on ARCH_IOP32X || ARCH_IOP33X || ARCH_IOP13XX || COMPILE_TEST
 	select DMA_ENGINE
 	select ASYNC_TX_ENABLE_CHANNEL_SWITCH
 	help
@@ -339,7 +340,7 @@  config MV_XOR
 
 config MV_XOR_V2
 	bool "Marvell XOR engine version 2 support "
-	depends on ARM64
+	depends on ARM64 && (ARCH_MVEBU || COMPILE_TEST)
 	select DMA_ENGINE
 	select DMA_ENGINE_RAID
 	select ASYNC_TX_ENABLE_CHANNEL_SWITCH
@@ -383,7 +384,7 @@  config MX3_IPU_IRQS
 config NBPFAXI_DMA
 	tristate "Renesas Type-AXI NBPF DMA support"
 	select DMA_ENGINE
-	depends on ARM || COMPILE_TEST
+	depends on (ARM && ARCH_RENESAS) || COMPILE_TEST
 	help
 	  Support for "Type-AXI" NBPF DMA IPs from Renesas
 
@@ -493,7 +494,7 @@  config TEGRA210_ADMA
 
 config TIMB_DMA
 	tristate "Timberdale FPGA DMA support"
-	depends on MFD_TIMBERDALE || COMPILE_TEST
+	depends on MFD_TIMBERDALE && (X86 || COMPILE_TEST)
 	select DMA_ENGINE
 	help
 	  Enable support for the Timberdale FPGA DMA engine.
@@ -531,7 +532,7 @@  config XGENE_DMA
 
 config XILINX_DMA
 	tristate "Xilinx AXI DMAS Engine"
-	depends on (ARCH_ZYNQ || MICROBLAZE || ARM64)
+	depends on (ARCH_ZYNQ || ARCH_ZYNQMP || MICROBLAZE || COMPILE_TEST)
 	select DMA_ENGINE
 	help
 	  Enable support for Xilinx AXI VDMA Soft IP.
@@ -550,7 +551,7 @@  config XILINX_DMA
 
 config XILINX_ZYNQMP_DMA
 	tristate "Xilinx ZynqMP DMA Engine"
-	depends on (ARCH_ZYNQ || MICROBLAZE || ARM64)
+	depends on (ARCH_ZYNQ || ARCH_ZYNQMP || MICROBLAZE || COMPILE_TEST)
 	select DMA_ENGINE
 	help
 	  Enable support for Xilinx ZynqMP DMA controller.