drm/amdgpu/sriov:alloc KIQ MQD in VRAM(v2)
authorMonk Liu <Monk.Liu@amd.com>
Thu, 21 Sep 2017 07:10:06 +0000 (15:10 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 26 Sep 2017 19:14:24 +0000 (15:14 -0400)
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>
drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c

index 4f6c68f..4fcd98e 100644 (file)
@@ -260,8 +260,13 @@ int amdgpu_gfx_compute_mqd_sw_init(struct amdgpu_device *adev,
        /* create MQD for KIQ */
        ring = &adev->gfx.kiq.ring;
        if (!ring->mqd_obj) {
+               /* originaly the KIQ MQD is put in GTT domain, but for SRIOV VRAM domain is a must
+                * otherwise hypervisor trigger SAVE_VF fail after driver unloaded which mean MQD
+                * deallocated and gart_unbind, to strict diverage we decide to use VRAM domain for
+                * KIQ MQD no matter SRIOV or Bare-metal
+                */
                r = amdgpu_bo_create_kernel(adev, mqd_size, PAGE_SIZE,
-                                           AMDGPU_GEM_DOMAIN_GTT, &ring->mqd_obj,
+                                           AMDGPU_GEM_DOMAIN_VRAM, &ring->mqd_obj,
                                            &ring->mqd_gpu_addr, &ring->mqd_ptr);
                if (r) {
                        dev_warn(adev->dev, "failed to create ring mqd ob (%d)", r);