]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/amdgpu: Add a UAPI flag for user to call mem_sync
authorAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Tue, 28 Apr 2020 05:28:43 +0000 (01:28 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 18 May 2020 15:24:21 +0000 (11:24 -0400)
When this flag is set in the CS IB flags, it causes
a memory cache flush of the GFX.

v2:
Move new flag to drm_amdgpu_cs_chunk_ib.flags
Bump up UAPI version
Remove condition on job != null to emit mem_sync

Signed-off-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: Luben Tuikov <luben.tuikov@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c
include/uapi/drm/amdgpu_drm.h

index beb35dd1296454264dbe4b220ec6ffe683c0863d..a0e5b54b6e470aa330d068c244e59a34cbc60555 100644 (file)
  * - 3.35.0 - Add drm_amdgpu_info_device::tcc_disabled_mask
  * - 3.36.0 - Allow reading more status registers on si/cik
  * - 3.37.0 - L2 is invalidated before SDMA IBs, needed for correctness
+ * - 3.38.0 - Add AMDGPU_IB_FLAG_EMIT_MEM_SYNC
  */
 #define KMS_DRIVER_MAJOR       3
-#define KMS_DRIVER_MINOR       37
+#define KMS_DRIVER_MINOR       38
 #define KMS_DRIVER_PATCHLEVEL  0
 
 int amdgpu_vram_limit = 0;
index c24366aacf3afaa9f5620fb966fa6d79c1c05500..b91853fd66d375ee8fb13b7424e1e4d1ff1a9df7 100644 (file)
@@ -189,6 +189,9 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs,
                dma_fence_put(tmp);
        }
 
+       if ((ib->flags & AMDGPU_IB_FLAG_EMIT_MEM_SYNC) && ring->funcs->emit_mem_sync)
+               ring->funcs->emit_mem_sync(ring);
+
        if (ring->funcs->insert_start)
                ring->funcs->insert_start(ring);
 
index e01b673f0449431570912e6a774e4bd175feafbc..4e873dcbe68f1338021c7e115a88b6fbb8c3f590 100644 (file)
@@ -602,6 +602,10 @@ union drm_amdgpu_cs {
  */
 #define AMDGPU_IB_FLAGS_SECURE  (1 << 5)
 
+/* Tell KMD to flush and invalidate caches
+ */
+#define AMDGPU_IB_FLAG_EMIT_MEM_SYNC  (1 << 6)
+
 struct drm_amdgpu_cs_chunk_ib {
        __u32 _pad;
        /** AMDGPU_IB_FLAG_* */