As part of the DRM TODO item "Remove custom dumb_map_offset implementations", switch amdgpu's &drm_driver.dumb_map_offset callback from the driver-specific amdgpu_mode_dumb_mmap() to the generic TTM helper drm_gem_ttm_dumb_map_offset(), for both amdgpu_kms_driver and amdgpu_partition_driver.
amdgpu_mode_dumb_mmap() additionally rejected userptr BOs and BOs created with AMDGPU_GEM_CREATE_NO_CPU_ACCESS with -EPERM. Dropping those checks from the dumb path does not allow such BOs to be mapped: returning an offset does not create a mapping, and the actual mmap() goes through drm_gem_mmap() -> amdgpu_gem_object_mmap(), which performs the same two checks and still returns -EPERM. The only user-visible difference is that DRM_IOCTL_MODE_MAP_DUMB on such a handle now succeeds and the subsequent mmap() fails, instead of the ioctl failing. Dumb buffers created by amdgpu_mode_dumb_create() are never userptr BOs and always have AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED set, so they are not affected. amdgpu_mode_dumb_mmap() is kept, because it still backs the driver-specific DRM_IOCTL_AMDGPU_GEM_MMAP via amdgpu_gem_mmap_ioctl(), which is used by libdrm_amdgpu and Mesa. That path is unchanged. Build-tested with CONFIG_DRM_AMDGPU=m (W=1 for amdgpu_drv.o and amdgpu_gem.o), no new warnings. Not runtime tested. The code change was written by hand and reviewed with the help of Claude (AI coding assistant); the commit message was written by Claude. Signed-off-by: saad <[email protected]> --- drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c index 731fe8f9e..134d2fe4b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c @@ -27,6 +27,7 @@ #include <drm/drm_drv.h> #include <drm/drm_fbdev_ttm.h> #include <drm/drm_gem.h> +#include <drm/drm_gem_ttm_helper.h> #include <drm/drm_managed.h> #include <drm/drm_pciids.h> #include <drm/drm_probe_helper.h> @@ -3151,7 +3152,7 @@ static const struct drm_driver amdgpu_kms_driver = { .ioctls = amdgpu_ioctls_kms, .num_ioctls = ARRAY_SIZE(amdgpu_ioctls_kms), .dumb_create = amdgpu_mode_dumb_create, - .dumb_map_offset = amdgpu_mode_dumb_mmap, + .dumb_map_offset = drm_gem_ttm_dumb_map_offset, DRM_FBDEV_TTM_DRIVER_OPS, .fops = &amdgpu_driver_kms_fops, .release = &amdgpu_driver_release_kms, @@ -3177,7 +3178,7 @@ const struct drm_driver amdgpu_partition_driver = { .ioctls = amdgpu_ioctls_kms, .num_ioctls = ARRAY_SIZE(amdgpu_ioctls_kms), .dumb_create = amdgpu_mode_dumb_create, - .dumb_map_offset = amdgpu_mode_dumb_mmap, + .dumb_map_offset = drm_gem_ttm_dumb_map_offset, DRM_FBDEV_TTM_DRIVER_OPS, .fops = &amdgpu_driver_kms_fops, .release = &amdgpu_driver_release_kms, --- base-commit: 279235273fc6c0a33df863b4a1cc52ec1e73aba5 change-id: 20261105-amdgpu-dumb-map-offset-6fa41e8d3fb5 Best regards, -- saad <[email protected]>
