* [openeuler:openEuler-1.0-LTS 1343/1343] drivers/iommu/iommu.c:979:31: sparse: sparse: dubious: !x | !y
@ 2024-12-24 13:13 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-12-24 13:13 UTC (permalink / raw)
To: kernel, Xie XiuQi; +Cc: oe-kbuild-all
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 5a23f5b9f615aef1973a9e3894d42c2ddd7364b3
commit: ac084b72b429b1bc0378add3abecfe107a732b7a [1343/1343] iommu: introduce device fault report API
config: arm64-randconfig-r113-20241223 (https://download.01.org/0day-ci/archive/20241224/202412242131.GLZuoZe5-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 14.2.0
reproduce: (https://download.01.org/0day-ci/archive/20241224/202412242131.GLZuoZe5-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/202412242131.GLZuoZe5-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/iommu/iommu.c:979:31: sparse: sparse: dubious: !x | !y
drivers/iommu/iommu.c: In function 'iommu_unregister_device_fault_handler':
drivers/iommu/iommu.c:937:13: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
937 | int ret = 0;
| ^~~
In file included from arch/arm64/include/asm/atomic.h:34,
from include/linux/atomic.h:7,
from include/asm-generic/bitops/atomic.h:5,
from arch/arm64/include/asm/bitops.h:37,
from include/linux/bitops.h:19,
from include/linux/kernel.h:11,
from include/linux/list.h:9,
from include/linux/kobject.h:20,
from include/linux/device.h:17,
from drivers/iommu/iommu.c:21:
In function '__cmpxchg_case_acq_4',
inlined from '__cmpxchg_acq' at arch/arm64/include/asm/cmpxchg.h:141:1,
inlined from 'queued_spin_lock' at include/asm-generic/qspinlock.h:85:8,
inlined from 'do_raw_spin_lock' at include/linux/spinlock.h:180:2,
inlined from '__raw_spin_lock' at include/linux/spinlock_api_smp.h:143:2,
inlined from 'spin_lock' at include/linux/spinlock.h:329:2,
inlined from 'iommu_device_register' at drivers/iommu/iommu.c:101:2:
arch/arm64/include/asm/atomic_lse.h:458:9: warning: array subscript 'long unsigned int[0]' is partly outside array bounds of 'spinlock_t[1]' {aka 'struct spinlock[1]'} [-Warray-bounds=]
458 | asm volatile(ARM64_LSE_ATOMIC_INSN( 25- | ^~~
arch/arm64/include/asm/atomic_lse.h:479:1: note: in expansion of macro '__CMPXCHG_CASE'
479 | __CMPXCHG_CASE(w, , acq_4, a, "memory")
| ^~~~~~~~~~~~~~
In file included from include/linux/mutex.h:16,
from include/linux/kernfs.h:14,
from include/linux/sysfs.h:16,
from include/linux/kobject.h:21:
drivers/iommu/iommu.c: In function 'iommu_device_register':
drivers/iommu/iommu.c:97:24: note: object 'iommu_device_lock' of size 4
97 | static DEFINE_SPINLOCK(iommu_device_lock);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock_types.h:81:44: note: in definition of macro 'DEFINE_SPINLOCK'
81 | #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
| ^
In function '__cmpxchg_case_acq_4',
inlined from '__cmpxchg_acq' at arch/arm64/include/asm/cmpxchg.h:141:1,
inlined from 'queued_spin_lock' at include/asm-generic/qspinlock.h:85:8,
inlined from 'do_raw_spin_lock' at include/linux/spinlock.h:180:2,
inlined from '__raw_spin_lock' at include/linux/spinlock_api_smp.h:143:2,
inlined from 'spin_lock' at include/linux/spinlock.h:329:2,
inlined from 'iommu_device_register' at drivers/iommu/iommu.c:101:2:
arch/arm64/include/asm/atomic_lse.h:458:9: warning: array subscript 'long unsigned int[0]' is partly outside array bounds of 'spinlock_t[1]' {aka 'struct spinlock[1]'} [-Warray-bounds=]
458 | asm volatile(ARM64_LSE_ATOMIC_INSN( 49- | ^~~
arch/arm64/include/asm/atomic_lse.h:479:1: note: in expansion of macro '__CMPXCHG_CASE'
479 | __CMPXCHG_CASE(w, , acq_4, a, "memory")
| ^~~~~~~~~~~~~~
drivers/iommu/iommu.c: In function 'iommu_device_register':
drivers/iommu/iommu.c:97:24: note: object 'iommu_device_lock' of size 4
97 | static DEFINE_SPINLOCK(iommu_device_lock);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock_types.h:81:44: note: in definition of macro 'DEFINE_SPINLOCK'
81 | #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
| ^
In function '__cmpxchg_case_acq_4',
inlined from '__cmpxchg_acq' at arch/arm64/include/asm/cmpxchg.h:141:1,
inlined from 'queued_spin_lock' at include/asm-generic/qspinlock.h:85:8,
inlined from 'do_raw_spin_lock' at include/linux/spinlock.h:180:2,
inlined from '__raw_spin_lock' at include/linux/spinlock_api_smp.h:143:2,
inlined from 'spin_lock' at include/linux/spinlock.h:329:2,
inlined from 'iommu_device_unregister' at drivers/iommu/iommu.c:110:2:
arch/arm64/include/asm/atomic_lse.h:458:9: warning: array subscript 'long unsigned int[0]' is partly outside array bounds of 'spinlock_t[1]' {aka 'struct spinlock[1]'} [-Warray-bounds=]
458 | asm volatile(ARM64_LSE_ATOMIC_INSN( 69- | ^~~
arch/arm64/include/asm/atomic_lse.h:479:1: note: in expansion of macro '__CMPXCHG_CASE'
479 | __CMPXCHG_CASE(w, , acq_4, a, "memory")
| ^~~~~~~~~~~~~~
drivers/iommu/iommu.c: In function 'iommu_device_unregister':
drivers/iommu/iommu.c:97:24: note: object 'iommu_device_lock' of size 4
97 | static DEFINE_SPINLOCK(iommu_device_lock);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock_types.h:81:44: note: in definition of macro 'DEFINE_SPINLOCK'
81 | #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
| ^
In function '__cmpxchg_case_acq_4',
inlined from '__cmpxchg_acq' at arch/arm64/include/asm/cmpxchg.h:141:1,
inlined from 'queued_spin_lock' at include/asm-generic/qspinlock.h:85:8,
inlined from 'do_raw_spin_lock' at include/linux/spinlock.h:180:2,
inlined from '__raw_spin_lock' at include/linux/spinlock_api_smp.h:143:2,
inlined from 'spin_lock' at include/linux/spinlock.h:329:2,
inlined from 'iommu_device_unregister' at drivers/iommu/iommu.c:110:2:
arch/arm64/include/asm/atomic_lse.h:458:9: warning: array subscript 'long unsigned int[0]' is partly outside array bounds of 'spinlock_t[1]' {aka 'struct spinlock[1]'} [-Warray-bounds=]
458 | asm volatile(ARM64_LSE_ATOMIC_INSN( 89- | ^~~
arch/arm64/include/asm/atomic_lse.h:479:1: note: in expansion of macro '__CMPXCHG_CASE'
479 | __CMPXCHG_CASE(w, , acq_4, a, "memory")
| ^~~~~~~~~~~~~~
drivers/iommu/iommu.c: In function 'iommu_device_unregister':
drivers/iommu/iommu.c:97:24: note: object 'iommu_device_lock' of size 4
97 | static DEFINE_SPINLOCK(iommu_device_lock);
| ^~~~~~~~~~~~~~~~~
include/linux/spinlock_types.h:81:44: note: in definition of macro 'DEFINE_SPINLOCK'
81 | #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
| ^
In function '__cmpxchg_case_acq_4',
inlined from '__cmpxchg_acq' at arch/arm64/include/asm/cmpxchg.h:141:1,
vim +979 drivers/iommu/iommu.c
960
961
962 /**
963 * iommu_report_device_fault() - Report fault event to device
964 * @dev: the device
965 * @evt: fault event data
966 *
967 * Called by IOMMU model specific drivers when fault is detected, typically
968 * in a threaded IRQ handler.
969 *
970 * Return 0 on success, or an error.
971 */
972 int iommu_report_device_fault(struct device *dev, struct iommu_fault_event *evt)
973 {
974 int ret = 0;
975 struct iommu_fault_event *evt_pending;
976 struct iommu_fault_param *fparam;
977
978 /* iommu_param is allocated when device is added to group */
> 979 if (!dev->iommu_param | !evt)
980 return -EINVAL;
981 /* we only report device fault if there is a handler registered */
982 mutex_lock(&dev->iommu_param->lock);
983 if (!dev->iommu_param->fault_param ||
984 !dev->iommu_param->fault_param->handler) {
985 ret = -EINVAL;
986 goto done_unlock;
987 }
988 fparam = dev->iommu_param->fault_param;
989 if (evt->type == IOMMU_FAULT_PAGE_REQ && evt->last_req) {
990 evt_pending = kzalloc(sizeof(*evt_pending), GFP_ATOMIC);
991 if (!evt_pending) {
992 ret = -ENOMEM;
993 goto done_unlock;
994 }
995 memcpy(evt_pending, evt, sizeof(struct iommu_fault_event));
996 mutex_lock(&fparam->lock);
997 list_add_tail(&evt_pending->list, &fparam->faults);
998 mutex_unlock(&fparam->lock);
999 }
1000 ret = fparam->handler(evt, fparam->data);
1001 done_unlock:
1002 mutex_unlock(&dev->iommu_param->lock);
1003 return ret;
1004 }
1005 EXPORT_SYMBOL_GPL(iommu_report_device_fault);
1006
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2024-12-24 13:14 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-24 13:13 [openeuler:openEuler-1.0-LTS 1343/1343] drivers/iommu/iommu.c:979:31: sparse: sparse: dubious: !x | !y kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.