diff mbox

[7/7] staging: fsl-mc: allow the driver compile multi-arch

Message ID 20170717132646.3020-8-laurentiu.tudor@nxp.com (mailing list archive)
State New, archived
Headers show

Commit Message

Laurentiu Tudor July 17, 2017, 1:26 p.m. UTC
From: Laurentiu Tudor <laurentiu.tudor@nxp.com>

Drop dependency on ARCH_LAYERSCAPE (which in turn depends on ARM64),
thus leaving this driver compile on other architectures.
Also, other drivers depending on the bus are updated to depend
on ARCH_LAYERSCAPE until they'll also be made multi-arch.
This was compiled tested on:
 - booke powerpc (corenet{32,64}_smp_defconfig)
 - x86 (i386_defconfig, x86_64_defconfig, needs CONFIG_OF)
 - arm64 (defconfig)

Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com>
---
 drivers/staging/fsl-dpaa2/Kconfig  | 2 +-
 drivers/staging/fsl-mc/bus/Kconfig | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

Comments

kernel test robot July 19, 2017, 4:09 p.m. UTC | #1
Hi Laurentiu,

[auto build test ERROR on staging/staging-testing]
[also build test ERROR on v4.13-rc1 next-20170718]
[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/laurentiu-tudor-nxp-com/staging-fsl-mc-make-the-driver-compile-on-other-architectures/20170718-021715
config: cris-allyesconfig (attached as .config)
compiler: cris-linux-gcc (GCC) 6.2.0
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=cris 

All errors (new ones prefixed by >>):

   In file included from drivers/staging/fsl-mc/bus/fsl-mc-bus.c:21:0:
>> include/linux/msi.h:196:21: fatal error: asm/msi.h: No such file or directory
    #include <asm/msi.h>
                        ^
   compilation terminated.

vim +196 include/linux/msi.h

d9109698 Jiang Liu 2014-11-15  194  
aeeb5965 Jiang Liu 2014-11-15  195  #include <linux/irqhandler.h>
d9109698 Jiang Liu 2014-11-15 @196  #include <asm/msi.h>
d9109698 Jiang Liu 2014-11-15  197  

:::::: The code at line 196 was first introduced by commit
:::::: d9109698be6e7439e6082aa00d79d4556114739b genirq: Introduce msi_domain_alloc/free_irqs()

:::::: TO: Jiang Liu <jiang.liu@linux.intel.com>
:::::: CC: Thomas Gleixner <tglx@linutronix.de>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
kernel test robot July 19, 2017, 5:31 p.m. UTC | #2
Hi Laurentiu,

[auto build test ERROR on staging/staging-testing]
[also build test ERROR on v4.13-rc1 next-20170718]
[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/laurentiu-tudor-nxp-com/staging-fsl-mc-make-the-driver-compile-on-other-architectures/20170718-021715
config: sparc-allyesconfig (attached as .config)
compiler: sparc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
reproduce:
        wget https://raw.githubusercontent.com/01org/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=sparc 

All error/warnings (new ones prefixed by >>):

   In file included from kernel/irq/chip.c:14:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
--
   In file included from kernel/irq/msi.c:16:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
   kernel/irq/msi.c: In function 'msi_domain_alloc':
>> kernel/irq/msi.c:126:29: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
     irq_hw_number_t hwirq = ops->get_hwirq(info, arg);
                                ^~
>> kernel/irq/msi.c:139:12: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
               ^~
   kernel/irq/msi.c: At top level:
>> kernel/irq/msi.c:201:11: error: unknown type name 'msi_alloc_info_t'
              msi_alloc_info_t *arg)
              ^~~~~~~~~~~~~~~~
>> kernel/irq/msi.c:221:2: error: unknown field 'get_hwirq' specified in initializer
     .get_hwirq = msi_domain_ops_get_hwirq,
     ^
>> kernel/irq/msi.c:222:2: error: unknown field 'msi_init' specified in initializer
     .msi_init = msi_domain_ops_init,
     ^
>> kernel/irq/msi.c:222:14: error: 'msi_domain_ops_init' undeclared here (not in a function)
     .msi_init = msi_domain_ops_init,
                 ^~~~~~~~~~~~~~~~~~~
>> kernel/irq/msi.c:224:2: error: unknown field 'msi_prepare' specified in initializer
     .msi_prepare = msi_domain_ops_prepare,
     ^
>> kernel/irq/msi.c:225:2: error: unknown field 'set_desc' specified in initializer
     .set_desc = msi_domain_ops_set_desc,
     ^
   In file included from include/uapi/linux/posix_types.h:4:0,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from kernel/irq/msi.c:12:
   include/linux/stddef.h:7:14: warning: excess elements in struct initializer
    #define NULL ((void *)0)
                 ^
>> kernel/irq/msi.c:195:34: note: in expansion of macro 'NULL'
    #define msi_domain_ops_set_desc  NULL
                                     ^~~~
>> kernel/irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
     .set_desc = msi_domain_ops_set_desc,
                 ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/stddef.h:7:14: note: (near initialization for 'msi_domain_ops_default')
    #define NULL ((void *)0)
                 ^
>> kernel/irq/msi.c:195:34: note: in expansion of macro 'NULL'
    #define msi_domain_ops_set_desc  NULL
                                     ^~~~
>> kernel/irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
     .set_desc = msi_domain_ops_set_desc,
                 ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/irq/msi.c: In function 'msi_domain_update_dom_ops':
   kernel/irq/msi.c:237:9: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
     if (ops->get_hwirq == NULL)
            ^~
   kernel/irq/msi.c:238:6: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
      ops->get_hwirq = msi_domain_ops_default.get_hwirq;
         ^~
   kernel/irq/msi.c:238:42: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
      ops->get_hwirq = msi_domain_ops_default.get_hwirq;
                                             ^
   kernel/irq/msi.c:239:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
     if (ops->msi_init == NULL)
            ^~
   kernel/irq/msi.c:240:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ops->msi_init = msi_domain_ops_default.msi_init;
         ^~
   kernel/irq/msi.c:240:41: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ops->msi_init = msi_domain_ops_default.msi_init;
                                            ^
>> kernel/irq/msi.c:243:9: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
     if (ops->msi_prepare == NULL)
            ^~
   kernel/irq/msi.c:244:6: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
      ops->msi_prepare = msi_domain_ops_default.msi_prepare;
         ^~
   kernel/irq/msi.c:244:44: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
      ops->msi_prepare = msi_domain_ops_default.msi_prepare;
                                               ^
>> kernel/irq/msi.c:245:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
     if (ops->set_desc == NULL)
            ^~
   kernel/irq/msi.c:246:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
      ops->set_desc = msi_domain_ops_default.set_desc;
         ^~
   kernel/irq/msi.c:246:41: error: 'struct msi_domain_ops' has no member named 'set_desc'
      ops->set_desc = msi_domain_ops_default.set_desc;
                                            ^
   kernel/irq/msi.c: At top level:
   kernel/irq/msi.c:285:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *arg)
                     ^~~~~~~~~~~~~~~~
   kernel/irq/msi.c:299:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *arg)
                                ^~~~~~~~~~~~~~~~
   kernel/irq/msi.c: In function 'msi_domain_alloc_irqs':
   kernel/irq/msi.c:352:2: error: unknown type name 'msi_alloc_info_t'
     msi_alloc_info_t arg;
     ^~~~~~~~~~~~~~~~
>> kernel/irq/msi.c:356:8: error: implicit declaration of function 'msi_domain_prepare_irqs' [-Werror=implicit-function-declaration]
     ret = msi_domain_prepare_irqs(domain, dev, nvec, &arg);
           ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/irq/msi.c:361:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
      ops->set_desc(&arg, desc);
         ^~
>> kernel/irq/msi.c:370:11: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
       if (ops->msi_finish)
              ^~
   kernel/irq/msi.c:371:8: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
        ops->msi_finish(&arg, ret);
           ^~
   kernel/irq/msi.c:379:9: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
     if (ops->msi_finish)
            ^~
   kernel/irq/msi.c:380:6: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
      ops->msi_finish(&arg, 0);
         ^~
   cc1: some warnings being treated as errors
--
   In file included from drivers//staging/fsl-mc/bus/fsl-mc-msi.c:17:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
   drivers//staging/fsl-mc/bus/fsl-mc-msi.c: In function 'fsl_mc_msi_update_dom_ops':
>> drivers//staging/fsl-mc/bus/fsl-mc-msi.c:56:10: error: 'struct msi_domain_ops' has no member named 'set_desc'
     if (!ops->set_desc)
             ^~
   drivers//staging/fsl-mc/bus/fsl-mc-msi.c:57:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
      ops->set_desc = fsl_mc_msi_set_desc;
         ^~
--
   In file included from drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:15:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:30:17: error: unknown type name 'msi_alloc_info_t'
          int nvec, msi_alloc_info_t *info)
                    ^~~~~~~~~~~~~~~~
>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:56:2: error: unknown field 'msi_prepare' specified in initializer
     .msi_prepare = its_fsl_mc_msi_prepare,
     ^
>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:56:17: error: 'its_fsl_mc_msi_prepare' undeclared here (not in a function)
     .msi_prepare = its_fsl_mc_msi_prepare,
                    ^~~~~~~~~~~~~~~~~~~~~~
--
   In file included from drivers//base/platform-msi.c:24:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
>> drivers//base/platform-msi.c:37:2: error: unknown type name 'msi_alloc_info_t'
     msi_alloc_info_t arg;
     ^~~~~~~~~~~~~~~~
   drivers//base/platform-msi.c: In function 'platform_msi_update_dom_ops':
>> drivers//base/platform-msi.c:84:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
     if (ops->msi_init == NULL)
            ^~
   drivers//base/platform-msi.c:85:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ops->msi_init = platform_msi_init;
         ^~
>> drivers//base/platform-msi.c:86:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
     if (ops->set_desc == NULL)
            ^~
   drivers//base/platform-msi.c:87:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
      ops->set_desc = platform_msi_set_desc;
         ^~
   drivers//base/platform-msi.c: In function 'platform_msi_create_device_domain':
>> drivers//base/platform-msi.c:352:8: error: implicit declaration of function 'msi_domain_prepare_irqs' [-Werror=implicit-function-declaration]
     err = msi_domain_prepare_irqs(domain->parent, dev, nvec, &data->arg);
           ^~~~~~~~~~~~~~~~~~~~~~~
   drivers//base/platform-msi.c: In function 'platform_msi_domain_alloc':
>> drivers//base/platform-msi.c:410:8: error: implicit declaration of function 'msi_domain_populate_irqs' [-Werror=implicit-function-declaration]
     err = msi_domain_populate_irqs(domain->parent, data->dev,
           ^~~~~~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
--
   In file included from kernel//irq/msi.c:16:0:
>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
             msi_alloc_info_t *arg);
             ^~~~~~~~~~~~~~~~
   include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
            msi_alloc_info_t *arg);
            ^~~~~~~~~~~~~~~~
   include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
               msi_alloc_info_t *arg);
               ^~~~~~~~~~~~~~~~
   include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
     void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
                         ^~~~~~~~~~~~~~~~
   include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
     void  (*set_desc)(msi_alloc_info_t *arg,
                       ^~~~~~~~~~~~~~~~
   include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
           int nvec, msi_alloc_info_t *args);
                     ^~~~~~~~~~~~~~~~
   include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
            int virq, int nvec, msi_alloc_info_t *args);
                                ^~~~~~~~~~~~~~~~
   kernel//irq/msi.c: In function 'msi_domain_alloc':
   kernel//irq/msi.c:126:29: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
     irq_hw_number_t hwirq = ops->get_hwirq(info, arg);
                                ^~
   kernel//irq/msi.c:139:12: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
               ^~
   kernel//irq/msi.c: At top level:
   kernel//irq/msi.c:201:11: error: unknown type name 'msi_alloc_info_t'
              msi_alloc_info_t *arg)
              ^~~~~~~~~~~~~~~~
   kernel//irq/msi.c:221:2: error: unknown field 'get_hwirq' specified in initializer
     .get_hwirq = msi_domain_ops_get_hwirq,
     ^
   kernel//irq/msi.c:222:2: error: unknown field 'msi_init' specified in initializer
     .msi_init = msi_domain_ops_init,
     ^
   kernel//irq/msi.c:222:14: error: 'msi_domain_ops_init' undeclared here (not in a function)
     .msi_init = msi_domain_ops_init,
                 ^~~~~~~~~~~~~~~~~~~
   kernel//irq/msi.c:224:2: error: unknown field 'msi_prepare' specified in initializer
     .msi_prepare = msi_domain_ops_prepare,
     ^
   kernel//irq/msi.c:225:2: error: unknown field 'set_desc' specified in initializer
     .set_desc = msi_domain_ops_set_desc,
     ^
   In file included from include/uapi/linux/posix_types.h:4:0,
                    from include/uapi/linux/types.h:13,
                    from include/linux/types.h:5,
                    from kernel//irq/msi.c:12:
   include/linux/stddef.h:7:14: warning: excess elements in struct initializer
    #define NULL ((void *)0)
                 ^
   kernel//irq/msi.c:195:34: note: in expansion of macro 'NULL'
    #define msi_domain_ops_set_desc  NULL
                                     ^~~~
   kernel//irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
     .set_desc = msi_domain_ops_set_desc,
                 ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/stddef.h:7:14: note: (near initialization for 'msi_domain_ops_default')
    #define NULL ((void *)0)
                 ^
   kernel//irq/msi.c:195:34: note: in expansion of macro 'NULL'
    #define msi_domain_ops_set_desc  NULL
                                     ^~~~
   kernel//irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
     .set_desc = msi_domain_ops_set_desc,
                 ^~~~~~~~~~~~~~~~~~~~~~~
   kernel//irq/msi.c: In function 'msi_domain_update_dom_ops':
   kernel//irq/msi.c:237:9: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
     if (ops->get_hwirq == NULL)
            ^~
   kernel//irq/msi.c:238:6: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
      ops->get_hwirq = msi_domain_ops_default.get_hwirq;
         ^~
   kernel//irq/msi.c:238:42: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
      ops->get_hwirq = msi_domain_ops_default.get_hwirq;
                                             ^
   kernel//irq/msi.c:239:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
     if (ops->msi_init == NULL)
            ^~
   kernel//irq/msi.c:240:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ops->msi_init = msi_domain_ops_default.msi_init;
         ^~
   kernel//irq/msi.c:240:41: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
      ops->msi_init = msi_domain_ops_default.msi_init;
                                            ^
   kernel//irq/msi.c:243:9: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
     if (ops->msi_prepare == NULL)
            ^~
   kernel//irq/msi.c:244:6: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
      ops->msi_prepare = msi_domain_ops_default.msi_prepare;
         ^~
   kernel//irq/msi.c:244:44: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
      ops->msi_prepare = msi_domain_ops_default.msi_prepare;
                                               ^
   kernel//irq/msi.c:245:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
     if (ops->set_desc == NULL)
            ^~
   kernel//irq/msi.c:246:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
..

vim +/msi_alloc_info_t +225 include/linux/msi.h

f3cf8bb0 Jiang Liu        2014-11-12  204  
f3cf8bb0 Jiang Liu        2014-11-12  205  /**
f3cf8bb0 Jiang Liu        2014-11-12  206   * struct msi_domain_ops - MSI interrupt domain callbacks
f3cf8bb0 Jiang Liu        2014-11-12  207   * @get_hwirq:		Retrieve the resulting hw irq number
f3cf8bb0 Jiang Liu        2014-11-12  208   * @msi_init:		Domain specific init function for MSI interrupts
f3cf8bb0 Jiang Liu        2014-11-12  209   * @msi_free:		Domain specific function to free a MSI interrupts
d9109698 Jiang Liu        2014-11-15  210   * @msi_check:		Callback for verification of the domain/info/dev data
d9109698 Jiang Liu        2014-11-15  211   * @msi_prepare:	Prepare the allocation of the interrupts in the domain
1d1e8cdc Thomas Petazzoni 2015-12-21  212   * @msi_finish:		Optional callback to finalize the allocation
d9109698 Jiang Liu        2014-11-15  213   * @set_desc:		Set the msi descriptor for an interrupt
d9109698 Jiang Liu        2014-11-15  214   * @handle_error:	Optional error handler if the allocation fails
d9109698 Jiang Liu        2014-11-15  215   *
d9109698 Jiang Liu        2014-11-15  216   * @get_hwirq, @msi_init and @msi_free are callbacks used by
d9109698 Jiang Liu        2014-11-15  217   * msi_create_irq_domain() and related interfaces
d9109698 Jiang Liu        2014-11-15  218   *
d9109698 Jiang Liu        2014-11-15  219   * @msi_check, @msi_prepare, @msi_finish, @set_desc and @handle_error
1d1e8cdc Thomas Petazzoni 2015-12-21  220   * are callbacks used by msi_domain_alloc_irqs() and related
d9109698 Jiang Liu        2014-11-15  221   * interfaces which are based on msi_desc.
f3cf8bb0 Jiang Liu        2014-11-12  222   */
f3cf8bb0 Jiang Liu        2014-11-12  223  struct msi_domain_ops {
aeeb5965 Jiang Liu        2014-11-15  224  	irq_hw_number_t	(*get_hwirq)(struct msi_domain_info *info,
aeeb5965 Jiang Liu        2014-11-15 @225  				     msi_alloc_info_t *arg);
f3cf8bb0 Jiang Liu        2014-11-12  226  	int		(*msi_init)(struct irq_domain *domain,
f3cf8bb0 Jiang Liu        2014-11-12  227  				    struct msi_domain_info *info,
f3cf8bb0 Jiang Liu        2014-11-12  228  				    unsigned int virq, irq_hw_number_t hwirq,
aeeb5965 Jiang Liu        2014-11-15  229  				    msi_alloc_info_t *arg);
f3cf8bb0 Jiang Liu        2014-11-12  230  	void		(*msi_free)(struct irq_domain *domain,
f3cf8bb0 Jiang Liu        2014-11-12  231  				    struct msi_domain_info *info,
f3cf8bb0 Jiang Liu        2014-11-12  232  				    unsigned int virq);
d9109698 Jiang Liu        2014-11-15  233  	int		(*msi_check)(struct irq_domain *domain,
d9109698 Jiang Liu        2014-11-15  234  				     struct msi_domain_info *info,
d9109698 Jiang Liu        2014-11-15  235  				     struct device *dev);
d9109698 Jiang Liu        2014-11-15  236  	int		(*msi_prepare)(struct irq_domain *domain,
d9109698 Jiang Liu        2014-11-15  237  				       struct device *dev, int nvec,
d9109698 Jiang Liu        2014-11-15  238  				       msi_alloc_info_t *arg);
d9109698 Jiang Liu        2014-11-15  239  	void		(*msi_finish)(msi_alloc_info_t *arg, int retval);
d9109698 Jiang Liu        2014-11-15  240  	void		(*set_desc)(msi_alloc_info_t *arg,
d9109698 Jiang Liu        2014-11-15  241  				    struct msi_desc *desc);
d9109698 Jiang Liu        2014-11-15  242  	int		(*handle_error)(struct irq_domain *domain,
d9109698 Jiang Liu        2014-11-15  243  					struct msi_desc *desc, int error);
f3cf8bb0 Jiang Liu        2014-11-12  244  };
f3cf8bb0 Jiang Liu        2014-11-12  245  

:::::: The code at line 225 was first introduced by commit
:::::: aeeb59657c35da64068336c20068da237f41ab76 genirq: Provide default callbacks for msi_domain_ops

:::::: TO: Jiang Liu <jiang.liu@linux.intel.com>
:::::: CC: Thomas Gleixner <tglx@linutronix.de>

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
Laurentiu Tudor July 20, 2017, 1:47 p.m. UTC | #3
Hi,

Sparc seems to be broken in multiple places, including generic code.
Is this a known issue?
Is there something I could/should do?

---
Thanks & Best Regards, Laurentiu

On 07/19/2017 08:31 PM, kbuild test robot wrote:
> Hi Laurentiu,
>
> [auto build test ERROR on staging/staging-testing]
> [also build test ERROR on v4.13-rc1 next-20170718]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2F0day-ci%2Flinux%2Fcommits%2Flaurentiu-tudor-nxp-com%2Fstaging-fsl-mc-make-the-driver-compile-on-other-architectures%2F20170718-021715&data=01%7C01%7Claurentiu.tudor%40nxp.com%7C66f7c5619d664f88ce6108d4cecc14f5%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0&sdata=HgKrckHRkhwe6PrGHc%2B1UfoT1rCyMw5C5%2B7wdEuvS5s%3D&reserved=0
> config: sparc-allyesconfig (attached as .config)
> compiler: sparc64-linux-gnu-gcc (Debian 6.1.1-9) 6.1.1 20160705
> reproduce:
>          wget https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fraw.githubusercontent.com%2F01org%2Flkp-tests%2Fmaster%2Fsbin%2Fmake.cross&data=01%7C01%7Claurentiu.tudor%40nxp.com%7C66f7c5619d664f88ce6108d4cecc14f5%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0&sdata=kFjtWysm4LCK%2BnLcmpogI%2FHRRApSDRcl7QWofLo0%2FDY%3D&reserved=0 -O ~/bin/make.cross
>          chmod +x ~/bin/make.cross
>          # save the attached .config to linux build tree
>          make.cross ARCH=sparc
>
> All error/warnings (new ones prefixed by >>):
>
>     In file included from kernel/irq/chip.c:14:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
> --
>     In file included from kernel/irq/msi.c:16:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
>     kernel/irq/msi.c: In function 'msi_domain_alloc':
>>> kernel/irq/msi.c:126:29: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>       irq_hw_number_t hwirq = ops->get_hwirq(info, arg);
>                                  ^~
>>> kernel/irq/msi.c:139:12: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
>                 ^~
>     kernel/irq/msi.c: At top level:
>>> kernel/irq/msi.c:201:11: error: unknown type name 'msi_alloc_info_t'
>                msi_alloc_info_t *arg)
>                ^~~~~~~~~~~~~~~~
>>> kernel/irq/msi.c:221:2: error: unknown field 'get_hwirq' specified in initializer
>       .get_hwirq = msi_domain_ops_get_hwirq,
>       ^
>>> kernel/irq/msi.c:222:2: error: unknown field 'msi_init' specified in initializer
>       .msi_init = msi_domain_ops_init,
>       ^
>>> kernel/irq/msi.c:222:14: error: 'msi_domain_ops_init' undeclared here (not in a function)
>       .msi_init = msi_domain_ops_init,
>                   ^~~~~~~~~~~~~~~~~~~
>>> kernel/irq/msi.c:224:2: error: unknown field 'msi_prepare' specified in initializer
>       .msi_prepare = msi_domain_ops_prepare,
>       ^
>>> kernel/irq/msi.c:225:2: error: unknown field 'set_desc' specified in initializer
>       .set_desc = msi_domain_ops_set_desc,
>       ^
>     In file included from include/uapi/linux/posix_types.h:4:0,
>                      from include/uapi/linux/types.h:13,
>                      from include/linux/types.h:5,
>                      from kernel/irq/msi.c:12:
>     include/linux/stddef.h:7:14: warning: excess elements in struct initializer
>      #define NULL ((void *)0)
>                   ^
>>> kernel/irq/msi.c:195:34: note: in expansion of macro 'NULL'
>      #define msi_domain_ops_set_desc  NULL
>                                       ^~~~
>>> kernel/irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
>       .set_desc = msi_domain_ops_set_desc,
>                   ^~~~~~~~~~~~~~~~~~~~~~~
>     include/linux/stddef.h:7:14: note: (near initialization for 'msi_domain_ops_default')
>      #define NULL ((void *)0)
>                   ^
>>> kernel/irq/msi.c:195:34: note: in expansion of macro 'NULL'
>      #define msi_domain_ops_set_desc  NULL
>                                       ^~~~
>>> kernel/irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
>       .set_desc = msi_domain_ops_set_desc,
>                   ^~~~~~~~~~~~~~~~~~~~~~~
>     kernel/irq/msi.c: In function 'msi_domain_update_dom_ops':
>     kernel/irq/msi.c:237:9: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>       if (ops->get_hwirq == NULL)
>              ^~
>     kernel/irq/msi.c:238:6: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>        ops->get_hwirq = msi_domain_ops_default.get_hwirq;
>           ^~
>     kernel/irq/msi.c:238:42: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>        ops->get_hwirq = msi_domain_ops_default.get_hwirq;
>                                               ^
>     kernel/irq/msi.c:239:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>       if (ops->msi_init == NULL)
>              ^~
>     kernel/irq/msi.c:240:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ops->msi_init = msi_domain_ops_default.msi_init;
>           ^~
>     kernel/irq/msi.c:240:41: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ops->msi_init = msi_domain_ops_default.msi_init;
>                                              ^
>>> kernel/irq/msi.c:243:9: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>       if (ops->msi_prepare == NULL)
>              ^~
>     kernel/irq/msi.c:244:6: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>        ops->msi_prepare = msi_domain_ops_default.msi_prepare;
>           ^~
>     kernel/irq/msi.c:244:44: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>        ops->msi_prepare = msi_domain_ops_default.msi_prepare;
>                                                 ^
>>> kernel/irq/msi.c:245:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
>       if (ops->set_desc == NULL)
>              ^~
>     kernel/irq/msi.c:246:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
>        ops->set_desc = msi_domain_ops_default.set_desc;
>           ^~
>     kernel/irq/msi.c:246:41: error: 'struct msi_domain_ops' has no member named 'set_desc'
>        ops->set_desc = msi_domain_ops_default.set_desc;
>                                              ^
>     kernel/irq/msi.c: At top level:
>     kernel/irq/msi.c:285:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *arg)
>                       ^~~~~~~~~~~~~~~~
>     kernel/irq/msi.c:299:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *arg)
>                                  ^~~~~~~~~~~~~~~~
>     kernel/irq/msi.c: In function 'msi_domain_alloc_irqs':
>     kernel/irq/msi.c:352:2: error: unknown type name 'msi_alloc_info_t'
>       msi_alloc_info_t arg;
>       ^~~~~~~~~~~~~~~~
>>> kernel/irq/msi.c:356:8: error: implicit declaration of function 'msi_domain_prepare_irqs' [-Werror=implicit-function-declaration]
>       ret = msi_domain_prepare_irqs(domain, dev, nvec, &arg);
>             ^~~~~~~~~~~~~~~~~~~~~~~
>     kernel/irq/msi.c:361:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
>        ops->set_desc(&arg, desc);
>           ^~
>>> kernel/irq/msi.c:370:11: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
>         if (ops->msi_finish)
>                ^~
>     kernel/irq/msi.c:371:8: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
>          ops->msi_finish(&arg, ret);
>             ^~
>     kernel/irq/msi.c:379:9: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
>       if (ops->msi_finish)
>              ^~
>     kernel/irq/msi.c:380:6: error: 'struct msi_domain_ops' has no member named 'msi_finish'; did you mean 'msi_free'?
>        ops->msi_finish(&arg, 0);
>           ^~
>     cc1: some warnings being treated as errors
> --
>     In file included from drivers//staging/fsl-mc/bus/fsl-mc-msi.c:17:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
>     drivers//staging/fsl-mc/bus/fsl-mc-msi.c: In function 'fsl_mc_msi_update_dom_ops':
>>> drivers//staging/fsl-mc/bus/fsl-mc-msi.c:56:10: error: 'struct msi_domain_ops' has no member named 'set_desc'
>       if (!ops->set_desc)
>               ^~
>     drivers//staging/fsl-mc/bus/fsl-mc-msi.c:57:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
>        ops->set_desc = fsl_mc_msi_set_desc;
>           ^~
> --
>     In file included from drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:15:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
>>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:30:17: error: unknown type name 'msi_alloc_info_t'
>            int nvec, msi_alloc_info_t *info)
>                      ^~~~~~~~~~~~~~~~
>>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:56:2: error: unknown field 'msi_prepare' specified in initializer
>       .msi_prepare = its_fsl_mc_msi_prepare,
>       ^
>>> drivers//staging/fsl-mc/bus/irq-gic-v3-its-fsl-mc-msi.c:56:17: error: 'its_fsl_mc_msi_prepare' undeclared here (not in a function)
>       .msi_prepare = its_fsl_mc_msi_prepare,
>                      ^~~~~~~~~~~~~~~~~~~~~~
> --
>     In file included from drivers//base/platform-msi.c:24:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
>>> drivers//base/platform-msi.c:37:2: error: unknown type name 'msi_alloc_info_t'
>       msi_alloc_info_t arg;
>       ^~~~~~~~~~~~~~~~
>     drivers//base/platform-msi.c: In function 'platform_msi_update_dom_ops':
>>> drivers//base/platform-msi.c:84:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>       if (ops->msi_init == NULL)
>              ^~
>     drivers//base/platform-msi.c:85:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ops->msi_init = platform_msi_init;
>           ^~
>>> drivers//base/platform-msi.c:86:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
>       if (ops->set_desc == NULL)
>              ^~
>     drivers//base/platform-msi.c:87:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
>        ops->set_desc = platform_msi_set_desc;
>           ^~
>     drivers//base/platform-msi.c: In function 'platform_msi_create_device_domain':
>>> drivers//base/platform-msi.c:352:8: error: implicit declaration of function 'msi_domain_prepare_irqs' [-Werror=implicit-function-declaration]
>       err = msi_domain_prepare_irqs(domain->parent, dev, nvec, &data->arg);
>             ^~~~~~~~~~~~~~~~~~~~~~~
>     drivers//base/platform-msi.c: In function 'platform_msi_domain_alloc':
>>> drivers//base/platform-msi.c:410:8: error: implicit declaration of function 'msi_domain_populate_irqs' [-Werror=implicit-function-declaration]
>       err = msi_domain_populate_irqs(domain->parent, data->dev,
>             ^~~~~~~~~~~~~~~~~~~~~~~~
>     cc1: some warnings being treated as errors
> --
>     In file included from kernel//irq/msi.c:16:0:
>>> include/linux/msi.h:225:10: error: unknown type name 'msi_alloc_info_t'
>               msi_alloc_info_t *arg);
>               ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:229:9: error: unknown type name 'msi_alloc_info_t'
>              msi_alloc_info_t *arg);
>              ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:238:12: error: unknown type name 'msi_alloc_info_t'
>                 msi_alloc_info_t *arg);
>                 ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:239:22: error: unknown type name 'msi_alloc_info_t'
>       void  (*msi_finish)(msi_alloc_info_t *arg, int retval);
>                           ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:240:20: error: unknown type name 'msi_alloc_info_t'
>       void  (*set_desc)(msi_alloc_info_t *arg,
>                         ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:308:18: error: unknown type name 'msi_alloc_info_t'
>             int nvec, msi_alloc_info_t *args);
>                       ^~~~~~~~~~~~~~~~
>     include/linux/msi.h:310:29: error: unknown type name 'msi_alloc_info_t'
>              int virq, int nvec, msi_alloc_info_t *args);
>                                  ^~~~~~~~~~~~~~~~
>     kernel//irq/msi.c: In function 'msi_domain_alloc':
>     kernel//irq/msi.c:126:29: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>       irq_hw_number_t hwirq = ops->get_hwirq(info, arg);
>                                  ^~
>     kernel//irq/msi.c:139:12: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ret = ops->msi_init(domain, info, virq + i, hwirq + i, arg);
>                 ^~
>     kernel//irq/msi.c: At top level:
>     kernel//irq/msi.c:201:11: error: unknown type name 'msi_alloc_info_t'
>                msi_alloc_info_t *arg)
>                ^~~~~~~~~~~~~~~~
>     kernel//irq/msi.c:221:2: error: unknown field 'get_hwirq' specified in initializer
>       .get_hwirq = msi_domain_ops_get_hwirq,
>       ^
>     kernel//irq/msi.c:222:2: error: unknown field 'msi_init' specified in initializer
>       .msi_init = msi_domain_ops_init,
>       ^
>     kernel//irq/msi.c:222:14: error: 'msi_domain_ops_init' undeclared here (not in a function)
>       .msi_init = msi_domain_ops_init,
>                   ^~~~~~~~~~~~~~~~~~~
>     kernel//irq/msi.c:224:2: error: unknown field 'msi_prepare' specified in initializer
>       .msi_prepare = msi_domain_ops_prepare,
>       ^
>     kernel//irq/msi.c:225:2: error: unknown field 'set_desc' specified in initializer
>       .set_desc = msi_domain_ops_set_desc,
>       ^
>     In file included from include/uapi/linux/posix_types.h:4:0,
>                      from include/uapi/linux/types.h:13,
>                      from include/linux/types.h:5,
>                      from kernel//irq/msi.c:12:
>     include/linux/stddef.h:7:14: warning: excess elements in struct initializer
>      #define NULL ((void *)0)
>                   ^
>     kernel//irq/msi.c:195:34: note: in expansion of macro 'NULL'
>      #define msi_domain_ops_set_desc  NULL
>                                       ^~~~
>     kernel//irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
>       .set_desc = msi_domain_ops_set_desc,
>                   ^~~~~~~~~~~~~~~~~~~~~~~
>     include/linux/stddef.h:7:14: note: (near initialization for 'msi_domain_ops_default')
>      #define NULL ((void *)0)
>                   ^
>     kernel//irq/msi.c:195:34: note: in expansion of macro 'NULL'
>      #define msi_domain_ops_set_desc  NULL
>                                       ^~~~
>     kernel//irq/msi.c:225:14: note: in expansion of macro 'msi_domain_ops_set_desc'
>       .set_desc = msi_domain_ops_set_desc,
>                   ^~~~~~~~~~~~~~~~~~~~~~~
>     kernel//irq/msi.c: In function 'msi_domain_update_dom_ops':
>     kernel//irq/msi.c:237:9: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>       if (ops->get_hwirq == NULL)
>              ^~
>     kernel//irq/msi.c:238:6: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>        ops->get_hwirq = msi_domain_ops_default.get_hwirq;
>           ^~
>     kernel//irq/msi.c:238:42: error: 'struct msi_domain_ops' has no member named 'get_hwirq'
>        ops->get_hwirq = msi_domain_ops_default.get_hwirq;
>                                               ^
>     kernel//irq/msi.c:239:9: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>       if (ops->msi_init == NULL)
>              ^~
>     kernel//irq/msi.c:240:6: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ops->msi_init = msi_domain_ops_default.msi_init;
>           ^~
>     kernel//irq/msi.c:240:41: error: 'struct msi_domain_ops' has no member named 'msi_init'; did you mean 'msi_free'?
>        ops->msi_init = msi_domain_ops_default.msi_init;
>                                              ^
>     kernel//irq/msi.c:243:9: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>       if (ops->msi_prepare == NULL)
>              ^~
>     kernel//irq/msi.c:244:6: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>        ops->msi_prepare = msi_domain_ops_default.msi_prepare;
>           ^~
>     kernel//irq/msi.c:244:44: error: 'struct msi_domain_ops' has no member named 'msi_prepare'; did you mean 'msi_free'?
>        ops->msi_prepare = msi_domain_ops_default.msi_prepare;
>                                                 ^
>     kernel//irq/msi.c:245:9: error: 'struct msi_domain_ops' has no member named 'set_desc'
>       if (ops->set_desc == NULL)
>              ^~
>     kernel//irq/msi.c:246:6: error: 'struct msi_domain_ops' has no member named 'set_desc'
> ..
>
> vim +/msi_alloc_info_t +225 include/linux/msi.h
>
> f3cf8bb0 Jiang Liu        2014-11-12  204
> f3cf8bb0 Jiang Liu        2014-11-12  205  /**
> f3cf8bb0 Jiang Liu        2014-11-12  206   * struct msi_domain_ops - MSI interrupt domain callbacks
> f3cf8bb0 Jiang Liu        2014-11-12  207   * @get_hwirq:		Retrieve the resulting hw irq number
> f3cf8bb0 Jiang Liu        2014-11-12  208   * @msi_init:		Domain specific init function for MSI interrupts
> f3cf8bb0 Jiang Liu        2014-11-12  209   * @msi_free:		Domain specific function to free a MSI interrupts
> d9109698 Jiang Liu        2014-11-15  210   * @msi_check:		Callback for verification of the domain/info/dev data
> d9109698 Jiang Liu        2014-11-15  211   * @msi_prepare:	Prepare the allocation of the interrupts in the domain
> 1d1e8cdc Thomas Petazzoni 2015-12-21  212   * @msi_finish:		Optional callback to finalize the allocation
> d9109698 Jiang Liu        2014-11-15  213   * @set_desc:		Set the msi descriptor for an interrupt
> d9109698 Jiang Liu        2014-11-15  214   * @handle_error:	Optional error handler if the allocation fails
> d9109698 Jiang Liu        2014-11-15  215   *
> d9109698 Jiang Liu        2014-11-15  216   * @get_hwirq, @msi_init and @msi_free are callbacks used by
> d9109698 Jiang Liu        2014-11-15  217   * msi_create_irq_domain() and related interfaces
> d9109698 Jiang Liu        2014-11-15  218   *
> d9109698 Jiang Liu        2014-11-15  219   * @msi_check, @msi_prepare, @msi_finish, @set_desc and @handle_error
> 1d1e8cdc Thomas Petazzoni 2015-12-21  220   * are callbacks used by msi_domain_alloc_irqs() and related
> d9109698 Jiang Liu        2014-11-15  221   * interfaces which are based on msi_desc.
> f3cf8bb0 Jiang Liu        2014-11-12  222   */
> f3cf8bb0 Jiang Liu        2014-11-12  223  struct msi_domain_ops {
> aeeb5965 Jiang Liu        2014-11-15  224  	irq_hw_number_t	(*get_hwirq)(struct msi_domain_info *info,
> aeeb5965 Jiang Liu        2014-11-15 @225  				     msi_alloc_info_t *arg);
> f3cf8bb0 Jiang Liu        2014-11-12  226  	int		(*msi_init)(struct irq_domain *domain,
> f3cf8bb0 Jiang Liu        2014-11-12  227  				    struct msi_domain_info *info,
> f3cf8bb0 Jiang Liu        2014-11-12  228  				    unsigned int virq, irq_hw_number_t hwirq,
> aeeb5965 Jiang Liu        2014-11-15  229  				    msi_alloc_info_t *arg);
> f3cf8bb0 Jiang Liu        2014-11-12  230  	void		(*msi_free)(struct irq_domain *domain,
> f3cf8bb0 Jiang Liu        2014-11-12  231  				    struct msi_domain_info *info,
> f3cf8bb0 Jiang Liu        2014-11-12  232  				    unsigned int virq);
> d9109698 Jiang Liu        2014-11-15  233  	int		(*msi_check)(struct irq_domain *domain,
> d9109698 Jiang Liu        2014-11-15  234  				     struct msi_domain_info *info,
> d9109698 Jiang Liu        2014-11-15  235  				     struct device *dev);
> d9109698 Jiang Liu        2014-11-15  236  	int		(*msi_prepare)(struct irq_domain *domain,
> d9109698 Jiang Liu        2014-11-15  237  				       struct device *dev, int nvec,
> d9109698 Jiang Liu        2014-11-15  238  				       msi_alloc_info_t *arg);
> d9109698 Jiang Liu        2014-11-15  239  	void		(*msi_finish)(msi_alloc_info_t *arg, int retval);
> d9109698 Jiang Liu        2014-11-15  240  	void		(*set_desc)(msi_alloc_info_t *arg,
> d9109698 Jiang Liu        2014-11-15  241  				    struct msi_desc *desc);
> d9109698 Jiang Liu        2014-11-15  242  	int		(*handle_error)(struct irq_domain *domain,
> d9109698 Jiang Liu        2014-11-15  243  					struct msi_desc *desc, int error);
> f3cf8bb0 Jiang Liu        2014-11-12  244  };
> f3cf8bb0 Jiang Liu        2014-11-12  245
>
> :::::: The code at line 225 was first introduced by commit
> :::::: aeeb59657c35da64068336c20068da237f41ab76 genirq: Provide default callbacks for msi_domain_ops
>
> :::::: TO: Jiang Liu <jiang.liu@linux.intel.com>
> :::::: CC: Thomas Gleixner <tglx@linutronix.de>
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.01.org%2Fpipermail%2Fkbuild-all&data=01%7C01%7Claurentiu.tudor%40nxp.com%7C66f7c5619d664f88ce6108d4cecc14f5%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0&sdata=hceaX47eTei7tR91loXYyGufa3dPQhBqyS7R212VcUw%3D&reserved=0                   Intel Corporation
>
diff mbox

Patch

diff --git a/drivers/staging/fsl-dpaa2/Kconfig b/drivers/staging/fsl-dpaa2/Kconfig
index 730fd6d..dfff675 100644
--- a/drivers/staging/fsl-dpaa2/Kconfig
+++ b/drivers/staging/fsl-dpaa2/Kconfig
@@ -4,7 +4,7 @@ 
 
 config FSL_DPAA2
 	bool "Freescale DPAA2 devices"
-	depends on FSL_MC_BUS
+	depends on FSL_MC_BUS && ARCH_LAYERSCAPE
 	---help---
 	  Build drivers for Freescale DataPath Acceleration
 	  Architecture (DPAA2) family of SoCs.
diff --git a/drivers/staging/fsl-mc/bus/Kconfig b/drivers/staging/fsl-mc/bus/Kconfig
index a10aaf0..c0acc97 100644
--- a/drivers/staging/fsl-mc/bus/Kconfig
+++ b/drivers/staging/fsl-mc/bus/Kconfig
@@ -8,7 +8,7 @@ 
 
 config FSL_MC_BUS
 	bool "QorIQ DPAA2 fsl-mc bus driver"
-	depends on OF && ARCH_LAYERSCAPE
+	depends on OF
 	select GENERIC_MSI_IRQ_DOMAIN
 	help
 	  Driver to enable the bus infrastructure for the QorIQ DPAA2
@@ -18,7 +18,7 @@  config FSL_MC_BUS
 
 config FSL_MC_DPIO
         tristate "QorIQ DPAA2 DPIO driver"
-        depends on FSL_MC_BUS
+        depends on FSL_MC_BUS && ARCH_LAYERSCAPE
         help
 	  Driver for the DPAA2 DPIO object.  A DPIO provides queue and
 	  buffer management facilities for software to interact with