All of lore.kernel.org
 help / color / mirror / Atom feed
From: laurentiu.tudor@nxp.com (Laurentiu Tudor)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 7/7] staging: fsl-mc: allow the driver compile multi-arch
Date: Thu, 20 Jul 2017 13:47:27 +0000	[thread overview]
Message-ID: <5970B46F.2000807@nxp.com> (raw)
In-Reply-To: <201707200109.nheGR4xf%fengguang.wu@intel.com>

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
>

WARNING: multiple messages have this Message-ID (diff)
From: Laurentiu Tudor <laurentiu.tudor@nxp.com>
To: kbuild test robot <lkp@intel.com>
Cc: "kbuild-all@01.org" <kbuild-all@01.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"stuyoder@gmail.com" <stuyoder@gmail.com>,
	"devel@driverdev.osuosl.org" <devel@driverdev.osuosl.org>,
	"arnd@arndb.de" <arnd@arndb.de>,
	"marc.zyngier@arm.com" <marc.zyngier@arm.com>,
	Roy Pledge <roy.pledge@nxp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"agraf@suse.de" <agraf@suse.de>,
	"Catalin Horghidan" <catalin.horghidan@nxp.com>,
	Ioana Ciornei <ioana.ciornei@nxp.com>,
	Leo Li <leoyang.li@nxp.com>,
	Bharat Bhushan <bharat.bhushan@nxp.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Subject: Re: [PATCH 7/7] staging: fsl-mc: allow the driver compile multi-arch
Date: Thu, 20 Jul 2017 13:47:27 +0000	[thread overview]
Message-ID: <5970B46F.2000807@nxp.com> (raw)
In-Reply-To: <201707200109.nheGR4xf%fengguang.wu@intel.com>

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
>

  reply	other threads:[~2017-07-20 13:47 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-17 13:26 [PATCH 0/7] staging: fsl-mc: make the driver compile on other architectures laurentiu.tudor at nxp.com
2017-07-17 13:26 ` laurentiu.tudor
2017-07-17 13:26 ` [PATCH 1/7] staging: fsl-mc: add missing fsl_mc comment in struct msi_desc laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:26 ` [PATCH 2/7] staging: fsl-mc: use generic memory barriers laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:38   ` Robin Murphy
2017-07-17 13:38     ` Robin Murphy
2017-07-17 13:46     ` Laurentiu Tudor
2017-07-17 13:46       ` Laurentiu Tudor
2017-07-17 13:26 ` [PATCH 3/7] staging: fsl-mc: drop useless gic v3 related #include laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:26 ` [PATCH 4/7] staging: fsl-mc: fix compilation with non-generic msi domain ops laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:26 ` [PATCH 5/7] staging: fsl-mc: fix formating of phys_addr_t on 32 bits laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:26 ` [PATCH 6/7] staging: fsl-mc: rewrite mc command send/receive to work on 32-bits laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-17 13:43   ` Robin Murphy
2017-07-17 13:43     ` Robin Murphy
2017-07-17 14:53     ` Laurentiu Tudor
2017-07-17 14:53       ` Laurentiu Tudor
2017-07-17 13:45   ` Arnd Bergmann
2017-07-17 13:45     ` Arnd Bergmann
2017-07-17 14:27     ` Laurentiu Tudor
2017-07-17 14:27       ` Laurentiu Tudor
2017-07-17 15:00       ` Arnd Bergmann
2017-07-17 15:00         ` Arnd Bergmann
2017-07-18 11:08         ` Laurentiu Tudor
2017-07-18 11:08           ` Laurentiu Tudor
2017-07-18 11:39           ` Arnd Bergmann
2017-07-18 11:39             ` Arnd Bergmann
2017-07-17 13:26 ` [PATCH 7/7] staging: fsl-mc: allow the driver compile multi-arch laurentiu.tudor at nxp.com
2017-07-17 13:26   ` laurentiu.tudor
2017-07-19 16:09   ` kbuild test robot
2017-07-19 16:09     ` kbuild test robot
2017-07-19 17:31   ` kbuild test robot
2017-07-19 17:31     ` kbuild test robot
2017-07-20 13:47     ` Laurentiu Tudor [this message]
2017-07-20 13:47       ` Laurentiu Tudor

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5970B46F.2000807@nxp.com \
    --to=laurentiu.tudor@nxp.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.