]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: Allow more flags to be set on gem create.
authorDavid Francis <David.Francis@amd.com>
Tue, 12 Aug 2025 18:19:18 +0000 (14:19 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 2 Sep 2025 19:34:00 +0000 (15:34 -0400)
The GEM create flag AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE
specifies that gem memory contains sensitive information and
should be cleared to prevent snooping.

The COHERENT and UNCACHED gem create flags enable memory
features related to sharing memory across devices.

For CRIU we need to re-create KFD BOs through the
GEM_CREATE IOCTL, so allow those KFD specific flags here as well.
This will also aid us in the future and allows to move
the KFD components over using the render node for allocations.

Signed-off-by: David Francis <David.Francis@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
drivers/gpu/drm/amd/amdgpu/amdgpu_gem.h

index d5e685c5e28b909a203517a6493d21bd9edfab83..dff5f525ed1b3f5432469cbeee111e48fedc399a 100644 (file)
@@ -442,15 +442,7 @@ int amdgpu_gem_create_ioctl(struct drm_device *dev, void *data,
        int r;
 
        /* reject invalid gem flags */
-       if (flags & ~(AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED |
-                     AMDGPU_GEM_CREATE_NO_CPU_ACCESS |
-                     AMDGPU_GEM_CREATE_CPU_GTT_USWC |
-                     AMDGPU_GEM_CREATE_VRAM_CLEARED |
-                     AMDGPU_GEM_CREATE_VM_ALWAYS_VALID |
-                     AMDGPU_GEM_CREATE_EXPLICIT_SYNC |
-                     AMDGPU_GEM_CREATE_ENCRYPTED |
-                     AMDGPU_GEM_CREATE_GFX12_DCC |
-                     AMDGPU_GEM_CREATE_DISCARDABLE))
+       if (flags & ~AMDGPU_GEM_CREATE_SETTABLE_MASK)
                return -EINVAL;
 
        /* reject invalid gem domains */
index b51e8f95ee86d3e4067e981e0e670acb305498a0..b3047d73fe07579490b25bfd0cd68958401e30c1 100644 (file)
@@ -71,4 +71,18 @@ int amdgpu_gem_op_ioctl(struct drm_device *dev, void *data,
 int amdgpu_gem_metadata_ioctl(struct drm_device *dev, void *data,
                                struct drm_file *filp);
 
+#define AMDGPU_GEM_CREATE_SETTABLE_MASK        (AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | \
+       AMDGPU_GEM_CREATE_NO_CPU_ACCESS | \
+       AMDGPU_GEM_CREATE_CPU_GTT_USWC | \
+       AMDGPU_GEM_CREATE_VRAM_CLEARED | \
+       AMDGPU_GEM_CREATE_VM_ALWAYS_VALID | \
+       AMDGPU_GEM_CREATE_EXPLICIT_SYNC | \
+       AMDGPU_GEM_CREATE_VRAM_WIPE_ON_RELEASE | \
+       AMDGPU_GEM_CREATE_ENCRYPTED | \
+       AMDGPU_GEM_CREATE_GFX12_DCC | \
+       AMDGPU_GEM_CREATE_DISCARDABLE | \
+       AMDGPU_GEM_CREATE_COHERENT | \
+       AMDGPU_GEM_CREATE_UNCACHED | \
+       AMDGPU_GEM_CREATE_EXT_COHERENT)
+
 #endif