drm/amdgpu: disable gfxoff while use no H/W scheduling policy
authorHuang Rui <ray.huang@amd.com>
Mon, 2 Sep 2019 15:34:32 +0000 (23:34 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 16 Sep 2019 14:55:41 +0000 (09:55 -0500)
While gfxoff is enabled, the mmVM_XXX registers will be 0xfffffff while the GFX
is in "off" state. KFD queue creattion doesn't use ring based method, so it will
trigger a VM fault.

Signed-off-by: Huang Rui <ray.huang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu.h
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c

index 7723f4ed0130c60940da94f6835d1d38c3956757..733331837d925fb0a3e867852c0e739c6b427e81 100644 (file)
@@ -169,6 +169,7 @@ extern int amdgpu_discovery;
 extern int amdgpu_mes;
 extern int amdgpu_noretry;
 extern int amdgpu_force_asic_type;
+extern int sched_policy;
 
 #ifdef CONFIG_DRM_AMDGPU_SI
 extern int amdgpu_si_support;
index b09237b6531cc5b0d4f4c006355983094c3b2da1..1affaa4ee1eecc78a5351777e2e737fa60bf4942 100644 (file)
@@ -1624,7 +1624,7 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
        }
 
        adev->pm.pp_feature = amdgpu_pp_feature_mask;
-       if (amdgpu_sriov_vf(adev))
+       if (amdgpu_sriov_vf(adev) || sched_policy == KFD_SCHED_POLICY_NO_HWS)
                adev->pm.pp_feature &= ~PP_GFXOFF_MASK;
 
        for (i = 0; i < adev->num_ip_blocks; i++) {