tree:
https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git devicemsi
head: 67d94e5e316843b1af2b0c4cf5d4f8e9a91d97b4
commit: 67d94e5e316843b1af2b0c4cf5d4f8e9a91d97b4 [38/38] irqchip: Add IMS array driver -
NOT FOR MERGING
config: arc-allyesconfig (attached as .config)
compiler: arc-elf-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 67d94e5e316843b1af2b0c4cf5d4f8e9a91d97b4
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All error/warnings (new ones prefixed by >>):
drivers/irqchip/irq-ims-msi.c: In function 'ims_free_msi_store':
> drivers/irqchip/irq-ims-msi.c:65:39: error: dereferencing pointer
to incomplete type 'struct irq_domain'
65 | struct msi_domain_info
*info = domain->host_data;
| ^~
drivers/irqchip/irq-ims-msi.c: At top level:
> drivers/irqchip/irq-ims-msi.c:122:1: warning: no previous
prototype for 'pci_ims_create_msi_irq_domain' [-Wmissing-prototypes]
122 | pci_ims_create_msi_irq_domain(struct pci_dev *pdev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git/commit/?id...
git remote add tglx-devel
https://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git
git fetch --no-tags tglx-devel devicemsi
git checkout 67d94e5e316843b1af2b0c4cf5d4f8e9a91d97b4
vim +65 drivers/irqchip/irq-ims-msi.c
62
63 static void ims_free_msi_store(struct irq_domain *domain, struct device *dev)
64 {
65 struct msi_domain_info *info = domain->host_data;
66 struct ims_data *ims = info->data;
67 struct msi_desc *entry;
68
69 for_each_msi_entry(entry, dev) {
70 if (entry->device_msi.priv_iomem) {
71 clear_bit(entry->device_msi.hwirq, ims->map);
72 ims_reset_slot(entry->device_msi.priv_iomem);
73 entry->device_msi.priv_iomem = NULL;
74 entry->device_msi.hwirq = 0;
75 }
76 }
77 }
78
79 static int ims_alloc_msi_store(struct irq_domain *domain, struct device *dev,
80 int nvec)
81 {
82 struct msi_domain_info *info = domain->host_data;
83 struct ims_data *ims = info->data;
84 struct msi_desc *entry;
85
86 for_each_msi_entry(entry, dev) {
87 unsigned int idx;
88
89 idx = find_first_zero_bit(ims->map, ims->info.max_slots);
90 if (idx >= ims->info.max_slots)
91 goto fail;
92 set_bit(idx, ims->map);
93 entry->device_msi.priv_iomem = &ims->info.slots[idx];
94 entry->device_msi.hwirq = idx;
95 }
96 return 0;
97
98 fail:
99 ims_free_msi_store(domain, dev);
100 return -ENOSPC;
101 }
102
103 struct ims_domain_template {
104 struct msi_domain_ops ops;
105 struct msi_domain_info info;
106 };
107
108 static const struct ims_domain_template ims_domain_template = {
109 .ops = {
110 .msi_alloc_store = ims_alloc_msi_store,
111 .msi_free_store = ims_free_msi_store,
112 },
113 .info = {
114 .flags = MSI_FLAG_USE_DEF_DOM_OPS |
115 MSI_FLAG_USE_DEF_CHIP_OPS,
116 .handler = handle_edge_irq,
117 .handler_name = "edge",
118 },
119 };
120
121 struct irq_domain *
122 pci_ims_create_msi_irq_domain(struct pci_dev *pdev,
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org