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@xxxxxxxxx/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@xxxxxxxxx/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@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202412151947.yDHMy3jh-lkp@xxxxxxxxx/ 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 https://github.com/intel/lkp-tests/wiki