Applied. Thanks!
On Thu, Jul 23, 2026 at 4:24 AM Andre Eikmeyer <[email protected]> wrote: > > After S3, reloading amdgpu on MacBookPro15,1 systems with a Radeon Pro > 555X or 560X fails while loading the SMU firmware. The existing SMC > register check does not request a reset because the registers do not > reliably reflect the stale SMU state on these machines. > > Frederick Morlock found that forcing a VI ASIC reset allows the driver to > initialize again. This patch limits his workaround to the exact PCI > device, Apple subsystem device and revision combinations used by these > two GPUs, leaving other VI hardware unchanged. > > Suggested-by: Frederick Morlock <[email protected]> > Signed-off-by: Andre Eikmeyer <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/vi.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/drivers/gpu/drm/amd/amdgpu/vi.c b/drivers/gpu/drm/amd/amdgpu/vi.c > index a256320b92f3..320c43143e5d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/vi.c > +++ b/drivers/gpu/drm/amd/amdgpu/vi.c > @@ -1407,10 +1407,30 @@ static uint64_t vi_get_pcie_replay_count(struct > amdgpu_device *adev) > return (nak_r + nak_g); > } > > +struct vi_reset_quirk { > + u16 device; > + u16 subsystem_vendor; > + u16 subsystem_device; > + u8 revision; > +}; > + > +static const struct vi_reset_quirk vi_reset_quirks[] = { > + { 0x67ef, PCI_VENDOR_ID_APPLE, 0x0190, 0xe3 }, /* Radeon Pro 555X */ > + { 0x67ef, PCI_VENDOR_ID_APPLE, 0x018f, 0xc2 }, /* Radeon Pro 560X */ > +}; > + > static bool vi_need_reset_on_init(struct amdgpu_device *adev) > { > + unsigned int i; > u32 clock_cntl, pc; > > + for (i = 0; i < ARRAY_SIZE(vi_reset_quirks); i++) > + if (adev->pdev->device == vi_reset_quirks[i].device && > + adev->pdev->subsystem_vendor == > vi_reset_quirks[i].subsystem_vendor && > + adev->pdev->subsystem_device == > vi_reset_quirks[i].subsystem_device && > + adev->pdev->revision == vi_reset_quirks[i].revision) > + return true; > + > if (adev->flags & AMD_IS_APU) > return false; > > -- > 2.55.0 >
