On Fri, Sep 25, 2026 at 3:46 AM Ayhan Çiçek <[email protected]> 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 <[email protected]> > --- > 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 <[email protected]> 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 <[email protected]> --- 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
