drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:29:17: sparse: sparse: cast removes address space '__iomem' of expression
From: kernel test robot
Date: Thu Jun 11 2026 - 15:48:03 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9716c086c8e8b141d35aa61f2e96a2e83de212a7
commit: 6cc6e08d4542473d79ea83d9123d9d35e9c01c92 drm/nouveau/kms: add support for GB20x
date: 1 year, 1 month ago
config: powerpc-randconfig-r112-20260611 (https://download.01.org/0day-ci/archive/20260612/202606120311.UT962mTj-lkp@xxxxxxxxx/config)
compiler: powerpc-linux-gcc (GCC) 16.1.0
sparse: v0.6.5-rc1
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260612/202606120311.UT962mTj-lkp@xxxxxxxxx/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
| Fixes: 6cc6e08d4542 ("drm/nouveau/kms: add support for GB20x")
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606120311.UT962mTj-lkp@xxxxxxxxx/
sparse warnings: (new ones prefixed by >>)
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c: note: in included file (through drivers/gpu/drm/nouveau/nouveau_drv.h, drivers/gpu/drm/nouveau/nouveau_display.h, drivers/gpu/drm/nouveau/dispnv50/disp.h, ...):
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:9:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:10:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:11:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:12:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:13:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:14:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:17:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:18:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:20:1: sparse: sparse: directive in macro's argument list
drivers/gpu/drm/nouveau/include/nvif/ioctl.h:21:1: sparse: sparse: directive in macro's argument list
>> drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:29:17: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:29:17: sparse: sparse: cast removes address space '__iomem' of expression
>> drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:29:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:36:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:36:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:41:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:41:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:41:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:44:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:44:9: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:50:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:50:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:69:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:69:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:69:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:77:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:77:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:77:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:87:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:87:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:93:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:93:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:95:17: sparse: sparse: cast removes address space '__iomem' of expression
drivers/gpu/drm/nouveau/dispnv50/coreca7d.c:95:17: sparse: sparse: cast removes address space '__iomem' of expression
vim +/__iomem +29 drivers/gpu/drm/nouveau/dispnv50/coreca7d.c
14
15 static int
16 coreca7d_update(struct nv50_core *core, u32 *interlock, bool ntfy)
17 {
18 const u64 ntfy_addr = core->disp->sync->offset + NV50_DISP_CORE_NTFY;
19 const u32 ntfy_hi = upper_32_bits(ntfy_addr);
20 const u32 ntfy_lo = lower_32_bits(ntfy_addr);
21 struct nvif_push *push = &core->chan.push;
22 int ret;
23
24 ret = PUSH_WAIT(push, 5 + (ntfy ? 5 + 2 : 0));
25 if (ret)
26 return ret;
27
28 if (ntfy) {
> 29 PUSH_MTHD(push, NVCA7D, SET_SURFACE_ADDRESS_HI_NOTIFIER, ntfy_hi,
30
31 SET_SURFACE_ADDRESS_LO_NOTIFIER,
32 NVVAL(NVCA7D, SET_SURFACE_ADDRESS_LO_NOTIFIER, ADDRESS_LO, ntfy_lo >> 4) |
33 NVDEF(NVCA7D, SET_SURFACE_ADDRESS_LO_NOTIFIER, TARGET, PHYSICAL_NVM) |
34 NVDEF(NVCA7D, SET_SURFACE_ADDRESS_LO_NOTIFIER, ENABLE, ENABLE));
35
36 PUSH_MTHD(push, NVCA7D, SET_NOTIFIER_CONTROL,
37 NVDEF(NVCA7D, SET_NOTIFIER_CONTROL, MODE, WRITE) |
38 NVDEF(NVCA7D, SET_NOTIFIER_CONTROL, NOTIFY, ENABLE));
39 }
40
41 PUSH_MTHD(push, NVCA7D, SET_INTERLOCK_FLAGS, interlock[NV50_DISP_INTERLOCK_CURS],
42 SET_WINDOW_INTERLOCK_FLAGS, interlock[NV50_DISP_INTERLOCK_WNDW]);
43
44 PUSH_MTHD(push, NVCA7D, UPDATE,
45 NVDEF(NVCA7D, UPDATE, RELEASE_ELV, TRUE) |
46 NVDEF(NVCA7D, UPDATE, SPECIAL_HANDLING, NONE) |
47 NVDEF(NVCA7D, UPDATE, INHIBIT_INTERRUPTS, FALSE));
48
49 if (ntfy) {
50 PUSH_MTHD(push, NVCA7D, SET_NOTIFIER_CONTROL,
51 NVDEF(NVCA7D, SET_NOTIFIER_CONTROL, NOTIFY, DISABLE));
52 }
53
54 return PUSH_KICK(push);
55 }
56
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki