Re: [PATCH] irqchip/gic-v3-its: Don't try to move a disabled irq
From: kbuild test robot
Date: Sat May 30 2020 - 23:03:07 EST
Hi Ali,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on linus/master]
[also build test WARNING on linux/master v5.7-rc7]
[cannot apply to tip/irq/core arm-jcooper/irqchip/for-next next-20200529]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Ali-Saidi/irqchip-gic-v3-its-Don-t-try-to-move-a-disabled-irq/20200531-043957
base: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 86852175b016f0c6873dcbc24b93d12b7b246612
config: arm64-allyesconfig (attached as .config)
compiler: aarch64-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
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@xxxxxxxxx>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/irqchip/irq-gic-v3-its.c: In function 'its_irq_domain_activate':
>> drivers/irqchip/irq-gic-v3-its.c:3449:14: warning: passing argument 1 of 'cpumask_and' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
3449 | cpumask_and(cpu_mask, cpu_mask, cpu_online_mask);
| ^~~~~~~~
In file included from include/linux/rcupdate.h:31,
from include/linux/radix-tree.h:15,
from include/linux/idr.h:15,
from include/linux/kernfs.h:13,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:20,
from include/linux/of.h:17,
from include/linux/irqdomain.h:35,
from include/linux/acpi.h:13,
from drivers/irqchip/irq-gic-v3-its.c:7:
include/linux/cpumask.h:424:47: note: expected 'struct cpumask *' but argument is of type 'const struct cpumask *'
424 | static inline int cpumask_and(struct cpumask *dstp,
| ~~~~~~~~~~~~~~~~^~~~
In file included from include/linux/bits.h:23,
from include/linux/ioport.h:15,
from include/linux/acpi.h:12,
from drivers/irqchip/irq-gic-v3-its.c:7:
drivers/irqchip/irq-gic-v3-its.c: In function 'its_init_vpe_domain':
include/linux/bits.h:26:28: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
26 | __builtin_constant_p((l) > (h)), (l) > (h), 0)))
| ^
include/linux/build_bug.h:16:62: note: in definition of macro 'BUILD_BUG_ON_ZERO'
16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
| ^
include/linux/bits.h:39:3: note: in expansion of macro 'GENMASK_INPUT_CHECK'
39 | (GENMASK_INPUT_CHECK(h, l) + __GENMASK(h, l))
| ^~~~~~~~~~~~~~~~~~~
drivers/irqchip/irq-gic-v3-its.c:4765:10: note: in expansion of macro 'GENMASK'
4765 | devid = GENMASK(device_ids(its) - 1, 0);
| ^~~~~~~
include/linux/bits.h:26:40: warning: comparison of unsigned expression < 0 is always false [-Wtype-limits]
26 | __builtin_constant_p((l) > (h)), (l) > (h), 0)))
| ^
include/linux/build_bug.h:16:62: note: in definition of macro 'BUILD_BUG_ON_ZERO'
16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
| ^
include/linux/bits.h:39:3: note: in expansion of macro 'GENMASK_INPUT_CHECK'
39 | (GENMASK_INPUT_CHECK(h, l) + __GENMASK(h, l))
| ^~~~~~~~~~~~~~~~~~~
drivers/irqchip/irq-gic-v3-its.c:4765:10: note: in expansion of macro 'GENMASK'
4765 | devid = GENMASK(device_ids(its) - 1, 0);
| ^~~~~~~
vim +3449 drivers/irqchip/irq-gic-v3-its.c
3433
3434 static int its_irq_domain_activate(struct irq_domain *domain,
3435 struct irq_data *d, bool reserve)
3436 {
3437 struct its_device *its_dev = irq_data_get_irq_chip_data(d);
3438 u32 event = its_get_event_id(d);
3439 const struct cpumask *cpu_mask = cpu_online_mask;
3440 int cpu;
3441
3442 /* get the cpu_mask of local node */
3443 if (its_dev->its->numa_node >= 0)
3444 cpu_mask = cpumask_of_node(its_dev->its->numa_node);
3445
3446 /* If the cpu set to a different CPU that is still online use it */
3447 cpu = its_dev->event_map.col_map[event];
3448
> 3449 cpumask_and(cpu_mask, cpu_mask, cpu_online_mask);
3450
3451 if (!cpumask_test_cpu(cpu, cpu_mask)) {
3452 /* Bind the LPI to the first possible CPU */
3453 cpu = cpumask_first(cpu_mask);
3454 }
3455
3456 if (cpu >= nr_cpu_ids) {
3457 if (its_dev->its->flags & ITS_FLAGS_WORKAROUND_CAVIUM_23144)
3458 return -EINVAL;
3459
3460 cpu = cpumask_first(cpu_online_mask);
3461 }
3462
3463 its_dev->event_map.col_map[event] = cpu;
3464 irq_data_update_effective_affinity(d, cpumask_of(cpu));
3465
3466 /* Map the GIC IRQ and event to the device */
3467 its_send_mapti(its_dev, d->hwirq, event);
3468 return 0;
3469 }
3470
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx
Attachment:
.config.gz
Description: application/gzip