tree:
git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git ti-linux-5.4.y
head: 90e46f5ea1f52782440496e14fe7ccb72bbd8b04
commit: cff21cf22081ec4f0619d405017269f716ddae52 [3421/10779] PCI: dwc: pci-dra7xx: Fix
MSI IRQ handling
config: riscv-randconfig-r033-20201016 (attached as .config)
compiler: riscv64-linux-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 remote add ti
git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git
git fetch --no-tags ti ti-linux-5.4.y
git checkout cff21cf22081ec4f0619d405017269f716ddae52
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=riscv
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
drivers/pci/controller/dwc/pci-dra7xx.c: In function
'dra7xx_pcie_msi_irq_handler':
> drivers/pci/controller/dwc/pci-dra7xx.c:274:2: error: implicit
declaration of function 'chained_irq_enter'
[-Werror=implicit-function-declaration]
274 | chained_irq_enter(chip, desc);
| ^~~~~~~~~~~~~~~~~
> drivers/pci/controller/dwc/pci-dra7xx.c:308:2: error: implicit
declaration of function 'chained_irq_exit' [-Werror=implicit-function-declaration]
308 | chained_irq_exit(chip, desc);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/chained_irq_enter +274 drivers/pci/controller/dwc/pci-dra7xx.c
263
264 static void dra7xx_pcie_msi_irq_handler(struct irq_desc *desc)
265 {
266 struct irq_chip *chip = irq_desc_get_chip(desc);
267 struct dra7xx_pcie *dra7xx;
268 struct dw_pcie *pci;
269 struct pcie_port *pp;
270 unsigned long reg;
271 u32 virq, bit;
272 int count = 0;
273
274 chained_irq_enter(chip, desc);
275
276 pp = irq_desc_get_handler_data(desc);
277 pci = to_dw_pcie_from_pp(pp);
278 dra7xx = to_dra7xx_pcie(pci);
279
280 reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI);
281 dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, reg);
282
283 switch (reg) {
284 case MSI:
285 /**
286 * Need to make sure all MSI status bits read 0 before
287 * exiting. Else, new MSI IRQs are not registered by the
288 * wrapper. Have an upperbound for the loop and exit the
289 * IRQ in case of IRQ flood to avoid locking up system
290 * in interrupt context.
291 */
292 while (dra7xx_pcie_handle_msi_irq(pp) && count < 1000)
293 count++;
294
295 break;
296 case INTA:
297 case INTB:
298 case INTC:
299 case INTD:
300 for_each_set_bit(bit, ®, PCI_NUM_INTX) {
301 virq = irq_find_mapping(dra7xx->irq_domain, bit);
302 if (virq)
303 generic_handle_irq(virq);
304 }
305 break;
306 }
307
308 chained_irq_exit(chip, desc);
309 }
310
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org