Re: [PATCH] drm/amdgpu: extend MacBook VRAM-at-0 workaround to VERDE
From: Alex Deucher
Date: Fri Sep 25 2026 - 09:23:20 EST
On Fri, Sep 25, 2026 at 3:46 AM Ayhan Çiçek <ayhancicek@xxxxxxxxx> wrote:
>
> The existing MacBook workaround reserves VRAM at address 0 for
> Polaris ASICs when the iGPU is enabled. This prevents cursor
> allocations from landing at address 0.
>
> A MacBookPro11,5 with Radeon R9 M370X (VERDE) hits the same
> failure mode. Hardware cursor updates repeatedly log
> "DC: Cursor address is 0!" followed by
> "DC failed to set cursor attributes".
>
> Extend the existing workaround to CHIP_VERDE. With this change,
> hardware cursor operation is stable, the cursor errors remain at
> zero during repeated cursor movement, and cursor disappearance
> and flicker are no longer observed.
Sounds like this may be consistent for most or all Macs. How about
something like the attached patch?
Alex
>
> Signed-off-by: Ayhan Çiçek <ayhancicek@xxxxxxxxx>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> index 1bf2a42fa..9e7f9cc2b 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -1086,6 +1086,7 @@ void amdgpu_gmc_init_vga_resv_regions(struct amdgpu_device *adev)
> case CHIP_RENOIR:
> adev->mman.keep_stolen_vga_memory = true;
> break;
> + case CHIP_VERDE:
> case CHIP_POLARIS10:
> case CHIP_POLARIS11:
> case CHIP_POLARIS12:
> --
> 2.55.0
>
From a92384b77af3818310b471c9ef0484a1a64e8166 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexander.deucher@xxxxxxx>
Date: Fri, 25 Sep 2026 09:16:26 -0400
Subject: [PATCH] drm/amdgpu: make Mac FB workaround generic
Rather than adding a case of every chip where this is seen
just check if the FB is at 0 and the ssid is apple. This
should cover all chips which fall into this case.
Signed-off-by: Alex Deucher <alexander.deucher@xxxxxxx>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
index 1bf2a42fa63ce..92b3221590fb6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
@@ -1086,20 +1086,17 @@ void amdgpu_gmc_init_vga_resv_regions(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;
}
+ /* 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->pdev->subsystem_vendor == PCI_VENDOR_ID_APPLE) &&
+ (adev->gmc.vram_start == 0))
+ adev->mman.keep_stolen_vga_memory = true;
if (amdgpu_sriov_vf(adev) ||
!amdgpu_device_has_display_hardware(adev)) {
--
2.55.0