diff options
author | Monk Liu <Monk.Liu@amd.com> | 2017-09-21 03:10:06 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 15:14:24 -0400 |
commit | beb841028480a13a664f868688102f3cee762a6b (patch) | |
tree | a54f9fc03362135a922032415c709b9bd3c02478 /drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | |
parent | 85f95ad629558b65ab27cce583c683fb9e3da35c (diff) |
drm/amdgpu/sriov:alloc KIQ MQD in VRAM(v2)
this way after KIQ MQD released in drv unloading, CPC
can still let KIQ access this MQD thus RLCV SAVE_VF
will not fail
v2:
always use VRAM domain for KIQ MQD no matter BM or SRIOV
Signed-off-by: Monk Liu <Monk.Liu@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c index 4f6c68fc1dd9..4fcd98e65998 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | |||
@@ -260,8 +260,13 @@ int amdgpu_gfx_compute_mqd_sw_init(struct amdgpu_device *adev, | |||
260 | /* create MQD for KIQ */ | 260 | /* create MQD for KIQ */ |
261 | ring = &adev->gfx.kiq.ring; | 261 | ring = &adev->gfx.kiq.ring; |
262 | if (!ring->mqd_obj) { | 262 | if (!ring->mqd_obj) { |
263 | /* originaly the KIQ MQD is put in GTT domain, but for SRIOV VRAM domain is a must | ||
264 | * otherwise hypervisor trigger SAVE_VF fail after driver unloaded which mean MQD | ||
265 | * deallocated and gart_unbind, to strict diverage we decide to use VRAM domain for | ||
266 | * KIQ MQD no matter SRIOV or Bare-metal | ||
267 | */ | ||
263 | r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE, | 268 | r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE, |
264 | AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj, | 269 | AMDGPU_GEM_DOMAIN_VRAM, &ring->mqd_obj, |
265 | &ring->mqd_gpu_addr, &ring->mqd_ptr); | 270 | &ring->mqd_gpu_addr, &ring->mqd_ptr); |
266 | if (r) { | 271 | if (r) { |
267 | dev_warn(adev->dev, "failed to create ring mqd ob (%d)", r); | 272 | dev_warn(adev->dev, "failed to create ring mqd ob (%d)", r); |