Thanks, Alex.
That makes sense. I agree that checking for the Apple subsystem
vendor together with VRAM at
address 0 is a cleaner and more general solution than adding per-ASIC cases.

Thanks as well for incorporating my test result into the patch. The
generic version has remained stable on my MacBookPro11,5 with the
Radeon R9 M370X (VERDE), with the hardware cursor enabled.


Best regards,
Ayhan

5 Eki 2026 Pzt 16:28 tarihinde Alex Deucher <[email protected]>
şunu yazdı:

> 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.
>
> Tested-by: Ayhan Çiçek <[email protected]>
> 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 d25ca903e21b8..5d4276cd0f7d3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gmc.c
> @@ -1190,20 +1190,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
>
>

Reply via email to