On Wed Jun 24, 2026 at 12:33 AM CEST, Dave Airlie wrote: > @@ -172,8 +175,7 @@ nv50_instobj_kmap(struct nv50_instobj *iobj, struct > nvkm_vmm *vmm) > > /* Make the mapping visible to the host. */ > iobj->bar = bar; > - iobj->map = ioremap_wc(device->func->resource_addr(device, > NVKM_BAR2_INST) + > - (u32)iobj->bar->addr, size); > + iobj->map = io_mapping_map_wc(&imem->iomap, iobj->bar->addr, size);
Apparently, the u32 cast was there for a reason. nv50_bar_oneinit() creates the BAR2 VMM with a 4GiB base, so iobj->bar->addr includes a 4GiB offset that was truncated by the cast.
