On Intel MacBookPros with switchable graphics, when the iGPU
is enabled, the address of VRAM gets put at 0 in the dGPU's
virtual address space.  This is non-standard and seems to cause
issues with the cursor if it ends up at 0.  We have the framework
to reserve memory at 0 in the address space, so enable it here if
the vram start address is 0.

Reviewed-and-tested-by: Mario Kleiner <[email protected]>
Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4302
Cc: [email protected]
Cc: Mario Kleiner <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index 56e46238e6723..44ff800a57155 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -1067,6 +1067,16 @@ void amdgpu_gmc_get_vbios_allocations(struct 
amdgpu_device *adev)
        case CHIP_RENOIR:
                adev->mman.keep_stolen_vga_memory = true;
                break;
+       case CHIP_POLARIS10:
+       case CHIP_POLARIS11:
+       case CHIP_POLARIS12:
+               /* MacBookPros with switchable graphics put VRAM at 0 when
+                * the iGPU is enabled which results in cursor issues if
+                * the cursor ends up at 0.  Reserve vram at 0 in that case.
+                */
+               if (adev->gmc.vram_start == 0)
+                       adev->mman.keep_stolen_vga_memory = true;
+               break;
        default:
                adev->mman.keep_stolen_vga_memory = false;
                break;
-- 
2.53.0

Reply via email to