Re: [PATCH v2 2/5] PCI: sg2042: Add Sophgo SG2042 PCIe driver

kernel test robot
2024-12-15T12:06:00Z

Hi Chen,

kernel test robot noticed the following build errors:

[auto build test ERROR on fac04efc5c793dccbd07e2d59af9f90b7fc0dca4]

url: https://github.com/intel-lab-lkp/linux/commits/Chen-Wang/dt-bindings-pci-Add-Sophgo-SG2042-PCIe-host/20241209-152613
base: fac04efc5c793dccbd07e2d59af9f90b7fc0dca4
patch link: https://lore.kernel.org/r/1d82eff3670f60df24228e5c83cf663c6dd61eaf.1733726572.git.unicorn_wang%40outlook.com
patch subject: [PATCH v2 2/5] PCI: sg2042: Add Sophgo SG2042 PCIe driver
config: sh-randconfig-r071-20241215 (https://download.01.org/0day-ci/archive/20241215/202412151947.yDHMy3jh-lkp@intel.com/config)
compiler: sh4-linux-gcc (GCC) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241215/202412151947.yDHMy3jh-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202412151947.yDHMy3jh-lkp@intel.com/

All errors (new ones prefixed by >>):

In file included from drivers/pci/controller/cadence/pcie-sg2042.c:23:
drivers/pci/controller/cadence/../../../irqchip/irq-msi-lib.h:25:39: warning: 'struct msi_domain_info' declared inside parameter list will not be visible outside of this definition or declaration
25 | struct msi_domain_info *info);
| ^~~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:306:15: error: variable 'sg2042_pcie_msi_parent_ops' has initializer but incomplete type
306 | static struct msi_parent_ops sg2042_pcie_msi_parent_ops = {
| ^~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:307:10: error: 'struct msi_parent_ops' has no member named 'required_flags'
307 | .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
| ^~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:301:41: error: 'MSI_FLAG_USE_DEF_DOM_OPS' undeclared here (not in a function)
301 | #define SG2042_PCIE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:307:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_REQUIRED'
307 | .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:302:41: error: 'MSI_FLAG_USE_DEF_CHIP_OPS' undeclared here (not in a function)
302 | MSI_FLAG_USE_DEF_CHIP_OPS)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:307:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_REQUIRED'
307 | .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:301:40: warning: excess elements in struct initializer
301 | #define SG2042_PCIE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \
| ^
drivers/pci/controller/cadence/pcie-sg2042.c:307:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_REQUIRED'
307 | .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:301:40: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
301 | #define SG2042_PCIE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \
| ^
drivers/pci/controller/cadence/pcie-sg2042.c:307:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_REQUIRED'
307 | .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:308:10: error: 'struct msi_parent_ops' has no member named 'supported_flags'
308 | .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED,
| ^~~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:304:41: error: 'MSI_GENERIC_FLAGS_MASK' undeclared here (not in a function)
304 | #define SG2042_PCIE_MSI_FLAGS_SUPPORTED MSI_GENERIC_FLAGS_MASK
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:308:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_SUPPORTED'
308 | .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:304:41: warning: excess elements in struct initializer
304 | #define SG2042_PCIE_MSI_FLAGS_SUPPORTED MSI_GENERIC_FLAGS_MASK
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:308:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_SUPPORTED'
308 | .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:304:41: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
304 | #define SG2042_PCIE_MSI_FLAGS_SUPPORTED MSI_GENERIC_FLAGS_MASK
| ^~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:308:35: note: in expansion of macro 'SG2042_PCIE_MSI_FLAGS_SUPPORTED'
308 | .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:309:10: error: 'struct msi_parent_ops' has no member named 'bus_select_mask'
309 | .bus_select_mask = MATCH_PCI_MSI,
| ^~~~~~~~~~~~~~~
drivers/pci/controller/cadence/../../../irqchip/irq-msi-lib.h:15:33: warning: excess elements in struct initializer
15 | #define MATCH_PCI_MSI (0)
| ^
drivers/pci/controller/cadence/pcie-sg2042.c:309:35: note: in expansion of macro 'MATCH_PCI_MSI'
309 | .bus_select_mask = MATCH_PCI_MSI,
| ^~~~~~~~~~~~~
drivers/pci/controller/cadence/../../../irqchip/irq-msi-lib.h:15:33: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
15 | #define MATCH_PCI_MSI (0)
| ^
drivers/pci/controller/cadence/pcie-sg2042.c:309:35: note: in expansion of macro 'MATCH_PCI_MSI'
309 | .bus_select_mask = MATCH_PCI_MSI,
| ^~~~~~~~~~~~~
>> drivers/pci/controller/cadence/pcie-sg2042.c:310:10: error: 'struct msi_parent_ops' has no member named 'bus_select_token'
310 | .bus_select_token = DOMAIN_BUS_NEXUS,
| ^~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:310:35: warning: excess elements in struct initializer
310 | .bus_select_token = DOMAIN_BUS_NEXUS,
| ^~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:310:35: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
>> drivers/pci/controller/cadence/pcie-sg2042.c:311:10: error: 'struct msi_parent_ops' has no member named 'prefix'
311 | .prefix = "SG2042-",
| ^~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:311:35: warning: excess elements in struct initializer
311 | .prefix = "SG2042-",
| ^~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:311:35: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
>> drivers/pci/controller/cadence/pcie-sg2042.c:312:10: error: 'struct msi_parent_ops' has no member named 'init_dev_msi_info'
312 | .init_dev_msi_info = msi_lib_init_dev_msi_info,
| ^~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:312:35: warning: excess elements in struct initializer
312 | .init_dev_msi_info = msi_lib_init_dev_msi_info,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pci/controller/cadence/pcie-sg2042.c:312:35: note: (near initialization for 'sg2042_pcie_msi_parent_ops')
drivers/pci/controller/cadence/pcie-sg2042.c: In function 'sg2042_pcie_setup_msi':
>> drivers/pci/controller/cadence/pcie-sg2042.c:344:22: error: 'struct irq_domain' has no member named 'msi_parent_ops'
344 | parent_domain->msi_parent_ops = &sg2042_pcie_msi_parent_ops;
| ^~
drivers/pci/controller/cadence/pcie-sg2042.c: At top level:
>> drivers/pci/controller/cadence/pcie-sg2042.c:306:30: error: storage size of 'sg2042_pcie_msi_parent_ops' isn't known
306 | static struct msi_parent_ops sg2042_pcie_msi_parent_ops = {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~

vim +/sg2042_pcie_msi_parent_ops +306 drivers/pci/controller/cadence/pcie-sg2042.c

300
> 301 #define SG2042_PCIE_MSI_FLAGS_REQUIRED (MSI_FLAG_USE_DEF_DOM_OPS | \
> 302 MSI_FLAG_USE_DEF_CHIP_OPS)
303
> 304 #define SG2042_PCIE_MSI_FLAGS_SUPPORTED MSI_GENERIC_FLAGS_MASK
305
> 306 static struct msi_parent_ops sg2042_pcie_msi_parent_ops = {
> 307 .required_flags = SG2042_PCIE_MSI_FLAGS_REQUIRED,
> 308 .supported_flags = SG2042_PCIE_MSI_FLAGS_SUPPORTED,
> 309 .bus_select_mask = MATCH_PCI_MSI,
> 310 .bus_select_token = DOMAIN_BUS_NEXUS,
> 311 .prefix = "SG2042-",
> 312 .init_dev_msi_info = msi_lib_init_dev_msi_info,
313 };
314
315 static int sg2042_pcie_setup_msi(struct sg2042_pcie *pcie, struct device_node *msi_node)
316 {
317 struct device *dev = pcie->cdns_pcie->dev;
318 struct fwnode_handle *fwnode = of_node_to_fwnode(dev->of_node);
319 struct irq_domain *parent_domain;
320 int ret = 0;
321
322 if (!of_property_read_bool(msi_node, "msi-controller"))
323 return -ENODEV;
324
325 ret = of_irq_get_byname(msi_node, "msi");
326 if (ret <= 0) {
327 dev_err(dev, "%pOF: failed to get MSI irq\n", msi_node);
328 return ret;
329 }
330 pcie->msi_irq = ret;
331
332 irq_set_chained_handler_and_data(pcie->msi_irq,
333 sg2042_pcie_msi_chained_isr, pcie);
334
335 parent_domain = irq_domain_create_linear(fwnode, MSI_DEF_NUM_VECTORS,
336 &sg2042_pcie_msi_domain_ops, pcie);
337 if (!parent_domain) {
338 dev_err(dev, "%pfw: Failed to create IRQ domain\n", fwnode);
339 return -ENOMEM;
340 }
341 irq_domain_update_bus_token(parent_domain, DOMAIN_BUS_NEXUS);
342
343 parent_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT;
> 344 parent_domain->msi_parent_ops = &sg2042_pcie_msi_parent_ops;
345
346 pcie->msi_domain = parent_domain;
347
348 ret = sg2042_pcie_init_msi_data(pcie);
349 if (ret) {
350 dev_err(dev, "Failed to initialize MSI data!\n");
351 return ret;
352 }
353
354 return 0;
355 }
356

--
0-DAY CI Kernel Test Service