drm: Make drm_local_map use a resource_size_t offset
This changes drm_local_map to use a resource_size for its "offset" member instead of an unsigned long, thus allowing 32-bit machines with a >32-bit physical address space to be able to store there their register or framebuffer addresses when those are above 4G, such as when using a PCI video card on a recent AMCC 440 SoC. This patch isn't as "trivial" as it sounds: A few functions needed to have some unsigned long/int changed to resource_size_t and a few printk's had to be adjusted. But also, because userspace isn't capable of passing such offsets, I had to modify drm_find_matching_map() to ignore the offset passed in for maps of type _DRM_FRAMEBUFFER or _DRM_REGISTERS. If we ever support multiple _DRM_FRAMEBUFFER or _DRM_REGISTERS maps for a given device, we might have to change that trick, but I don't think that happens on any current driver. Signed-off-by:Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by:
Dave Airlie <airlied@linux.ie>
Showing
- drivers/gpu/drm/drm_bufs.c 28 additions, 9 deletionsdrivers/gpu/drm/drm_bufs.c
- drivers/gpu/drm/drm_proc.c 2 additions, 2 deletionsdrivers/gpu/drm/drm_proc.c
- drivers/gpu/drm/drm_vm.c 12 additions, 10 deletionsdrivers/gpu/drm/drm_vm.c
- drivers/gpu/drm/mga/mga_dma.c 9 additions, 8 deletionsdrivers/gpu/drm/mga/mga_dma.c
- drivers/gpu/drm/mga/mga_drv.h 2 additions, 2 deletionsdrivers/gpu/drm/mga/mga_drv.h
- drivers/gpu/drm/r128/r128_cce.c 4 additions, 3 deletionsdrivers/gpu/drm/r128/r128_cce.c
- drivers/gpu/drm/radeon/radeon_cp.c 5 additions, 4 deletionsdrivers/gpu/drm/radeon/radeon_cp.c
- include/drm/drmP.h 6 additions, 6 deletionsinclude/drm/drmP.h
Loading
Please register or sign in to comment