arch/arm64/kvm/vgic/vgic-v5-tables.c:1473:23: sparse: sparse: incorrect type in initializer (different base types)
kernel test robot
build bottree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 3f2425f5b5bbbdd991ca9cdfd5502e68d8895998 commit: f9846846c4df6818d323f4a86c168bd2d63c6cdb [5557/8449] KVM: arm64: gic-v5: Implement save/restore mechanisms for ISTs config: arm64-randconfig-r1307-20260918 (https://download.01.org/0day-ci/archive/20260919/[email protected]/config) compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 7252edd9aa82ef1c570ff6694ef7f4763a8a5d2f) sparse: v0.6.5-rc1 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260919/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
sparse warnings: (new ones prefixed by >>)
arch/arm64/kvm/vgic/vgic-v5-tables.c:1069:34: sparse: sparse: Using plain integer as NULL pointer
arch/arm64/kvm/vgic/vgic-v5-tables.c:537:31: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected void [noderef] __iomem *vmd_base @@ got void *[assigned] vmd @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:537:31: sparse: expected void [noderef] __iomem *vmd_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:537:31: sparse: got void *[assigned] vmd
arch/arm64/kvm/vgic/vgic-v5-tables.c:578:24: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [noderef] [usertype] __iomem *vpet_base @@ got restricted __le64 [usertype] *[assigned] vpet @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:578:24: sparse: expected restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:578:24: sparse: got restricted __le64 [usertype] *[assigned] vpet
arch/arm64/kvm/vgic/vgic-v5-tables.c:685:18: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:685:18: sparse: expected void const *objp
arch/arm64/kvm/vgic/vgic-v5-tables.c:685:18: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:686:18: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const *objp @@ got void [noderef] __iomem *vmd_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:686:18: sparse: expected void const *objp
arch/arm64/kvm/vgic/vgic-v5-tables.c:686:18: sparse: got void [noderef] __iomem *vmd_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:742:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [usertype] *vpet_base @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:742:19: sparse: expected restricted __le64 [usertype] *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:742:19: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:754:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le64 [usertype] tmp @@ got unsigned long long @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:754:13: sparse: expected restricted __le64 [usertype] tmp
arch/arm64/kvm/vgic/vgic-v5-tables.c:754:13: sparse: got unsigned long long
arch/arm64/kvm/vgic/vgic-v5-tables.c:757:17: sparse: sparse: cast from restricted __le64
arch/arm64/kvm/vgic/vgic-v5-tables.c:790:19: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected restricted __le64 [usertype] *vpet_base @@ got restricted __le64 [noderef] [usertype] __iomem *vpet_base @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:790:19: sparse: expected restricted __le64 [usertype] *vpet_base
arch/arm64/kvm/vgic/vgic-v5-tables.c:790:19: sparse: got restricted __le64 [noderef] [usertype] __iomem *vpet_base
>> arch/arm64/kvm/vgic/vgic-v5-tables.c:1473:23: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int __rpu_val @@ got restricted __le32 [assigned] [usertype] h_iste @@ arch/arm64/kvm/vgic/vgic-v5-tables.c:1473:23: sparse: expected unsigned int __rpu_val arch/arm64/kvm/vgic/vgic-v5-tables.c:1473:23: sparse: got restricted __le32 [assigned] [usertype] h_iste arch/arm64/kvm/vgic/vgic-v5-tables.c:1525:31: sparse: sparse: incorrect type in initializer (different base types) @@ expected unsigned int __rpu_val @@ got restricted __le32 [assigned] [usertype] h_iste @@ arch/arm64/kvm/vgic/vgic-v5-tables.c:1525:31: sparse: expected unsigned int __rpu_val arch/arm64/kvm/vgic/vgic-v5-tables.c:1525:31: sparse: got restricted __le32 [assigned] [usertype] h_iste >> arch/arm64/kvm/vgic/vgic-v5-tables.c:1722:23: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 __rgu_val @@ got unsigned int @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:1722:23: sparse: expected restricted __le32 __rgu_val
arch/arm64/kvm/vgic/vgic-v5-tables.c:1722:23: sparse: got unsigned int
arch/arm64/kvm/vgic/vgic-v5-tables.c:1777:31: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 __rgu_val @@ got unsigned int @@
arch/arm64/kvm/vgic/vgic-v5-tables.c:1777:31: sparse: expected restricted __le32 __rgu_val
arch/arm64/kvm/vgic/vgic-v5-tables.c:1777:31: sparse: got unsigned int
vim +1473 arch/arm64/kvm/vgic/vgic-v5-tables.c
1452
1453 /*
1454 * Save a linear host IST to userspace memory.
1455 *
1456 * Only the architected 32-bit ISTE state is stored. Metadata is skipped when
1457 * striding through the host IST.
1458 */
1459 static int vgic_v5_save_linear_ist(const struct vgic_v5_ist_desc *ist,
1460 u32 __user *uaddr, size_t nr_entries)
1461 {
1462 __le32 h_iste;
1463 size_t index;
1464 int ret;
1465
1466 vgic_v5_clean_inval(ist->base,
1467 GICV5_LINEAR_IST_SIZE(ist->id_bits, ist->istsz));
1468
1469 for (index = 0; index < nr_entries; index++) {
1470 __le32 *h_iste_addr = ist->base + index * ist->iste_size;
1471
1472 h_iste = READ_ONCE(*h_iste_addr);
> 1473 ret = put_user(h_iste, uaddr);
1474 if (ret)
1475 return ret;
1476
1477 uaddr++;
1478 }
1479
1480 return 0;
1481 }
1482
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki