If the pin domain is set to GTT | VRAM, look at the preferred domains for the bo and respect that if it's been set explicitly. Signed-off-by: Alex Deucher <alexander.deucher at amd.com> --- drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 6a9e46ae7f0a..16192f17653e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c @@ -704,9 +704,14 @@ int amdgpu_bo_pin_restricted(struct amdgpu_bo *bo, u32 domain, * See function amdgpu_display_supported_domains() */ if (domain == (AMDGPU_GEM_DOMAIN_VRAM | AMDGPU_GEM_DOMAIN_GTT)) { - domain = AMDGPU_GEM_DOMAIN_VRAM; - if (adev->gmc.real_vram_size <= AMDGPU_SG_THRESHOLD) + if (bo->preferred_domains == AMDGPU_GEM_DOMAIN_VRAM) + domain = AMDGPU_GEM_DOMAIN_VRAM; /* if user really wants vram, respect it */ + else if (bo->preferred_domains == AMDGPU_GEM_DOMAIN_GTT) + domain = AMDGPU_GEM_DOMAIN_GTT; /* if user really wants gtt, respect it */ + else if (adev->gmc.real_vram_size <= AMDGPU_SG_THRESHOLD) domain = AMDGPU_GEM_DOMAIN_GTT; + else + domain = AMDGPU_GEM_DOMAIN_VRAM; } if (bo->pin_count) { -- 2.13.6