drm/amdgpu: Add debug bit for userptr usage
authorShane Xiao <shane.xiao@amd.com>
Thu, 24 Apr 2025 05:15:01 +0000 (13:15 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 7 May 2025 21:45:04 +0000 (17:45 -0400)
In VM debug mode, it is desirable to notify the application
to correct the freeing sequence by unmapping the memory before
destroying the userptr in the old userptr path. Add a bitmask
to decide whether to send gpu vm fault to the applition.

Signed-off-by: Shane Xiao <shane.xiao@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.h
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

index f59ba0960a776ab60f5c3be218923011dc20e078..836ea081088af3675961f89cbf40953126ee91a3 100644 (file)
@@ -1281,6 +1281,7 @@ struct amdgpu_device {
        bool                            debug_enable_ras_aca;
        bool                            debug_exp_resets;
        bool                            debug_disable_gpu_ring_reset;
+       bool                            debug_vm_userptr;
 
        /* Protection for the following isolation structure */
        struct mutex                    enforce_isolation_mutex;
index 7f437aea3d06e6b48ce23b908784736580e3ec69..4ddd08ce888523498755da25f4f6fcea2c6ff588 100644 (file)
@@ -143,6 +143,7 @@ enum AMDGPU_DEBUG_MASK {
        AMDGPU_DEBUG_ENABLE_EXP_RESETS = BIT(5),
        AMDGPU_DEBUG_DISABLE_GPU_RING_RESET = BIT(6),
        AMDGPU_DEBUG_SMU_POOL = BIT(7),
+       AMDGPU_DEBUG_VM_USERPTR = BIT(8),
 };
 
 unsigned int amdgpu_vram_limit = UINT_MAX;
@@ -2273,6 +2274,10 @@ static void amdgpu_init_debug_options(struct amdgpu_device *adev)
                pr_info("debug: use vram for smu pool\n");
                adev->pm.smu_debug_mask |= SMU_DEBUG_POOL_USE_VRAM;
        }
+       if (amdgpu_debug_mask & AMDGPU_DEBUG_VM_USERPTR) {
+               pr_info("debug: VM mode debug for userptr is enabled\n");
+               adev->debug_vm_userptr = true;
+       }
 }
 
 static unsigned long amdgpu_fix_asic_type(struct pci_dev *pdev, unsigned long flags)