On Mon, Jul 13, 2026 at 2:04 PM Mario Limonciello <[email protected]> wrote: > > Use the X86_MATCH_VENDOR_FAM() and X86_MATCH_VENDOR_FAM_MODEL() macros > to make the quirks for dynamic speed switching more scalable.
Acked-by: Alex Deucher <[email protected]> > > Signed-off-by: Mario Limonciello <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 49 ++++++++++++---------- > 1 file changed, 28 insertions(+), 21 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index a4c8702fbf5a7..128a285e2bf4d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -1304,37 +1304,44 @@ bool amdgpu_device_seamless_boot_supported(struct > amdgpu_device *adev) > return amdgpu_ip_version(adev, DCE_HWIP, 0) >= IP_VERSION(3, 0, 0); > } > > -/* > - * Intel hosts such as Rocket Lake, Alder Lake, Raptor Lake and Sapphire > Rapids > - * don't support dynamic speed switching. Until we have confirmation from > Intel > - * that a specific host supports it, it's safer that we keep it disabled for > all. > - * > - * > https://edc.intel.com/content/www/us/en/design/products/platforms/details/raptor-lake-s/13th-generation-core-processors-datasheet-volume-1-of-2/005/pci-express-support/ > - * https://gitlab.freedesktop.org/drm/amd/-/issues/2663 > - */ > -static bool amdgpu_device_pcie_dynamic_switching_supported(struct > amdgpu_device *adev) > -{ > #if IS_ENABLED(CONFIG_X86) > - struct cpuinfo_x86 *c = &cpu_data(0); > +static const struct x86_cpu_id amdgpu_pcie_dynamic_switching_quirks[] = { > + /* > + * Intel hosts such as Rocket Lake, Alder Lake, Raptor Lake and > Sapphire Rapids > + * don't support dynamic speed switching. Until we have confirmation > from Intel > + * that a specific host supports it, it's safer that we keep it > disabled for all. > + * > + * > https://edc.intel.com/content/www/us/en/design/products/platforms/details/raptor-lake-s/13th-generation-core-processors-datasheet-volume-1-of-2/005/pci-express-support/ > + * https://gitlab.freedesktop.org/drm/amd/-/issues/2663 > + */ > + X86_MATCH_VENDOR_FAM(INTEL, X86_FAMILY_ANY, NULL), > + /* > + * AMD Ryzen Pinnacle Ridge (Zen+, family 0x17 model 0x08) CPUs don't > + * support PCIe dynamic speed switching. > + * https://gitlab.freedesktop.org/drm/amd/-/work_items/5436 > + */ > + X86_MATCH_VENDOR_FAM_MODEL(AMD, 0x17, 0x08, NULL), > + {} > +}; > > +static bool amdgpu_device_pcie_dynamic_switching_supported(struct > amdgpu_device *adev) > +{ > /* eGPU change speeds based on USB4 fabric conditions */ > if (dev_is_removable(adev->dev)) > return true; > > - if (c->x86_vendor == X86_VENDOR_INTEL) > + /* Hosts have problems with dynamic speed switching */ > + if (x86_match_cpu(amdgpu_pcie_dynamic_switching_quirks)) > return false; > > - /* > - * AMD Ryzen Pinnacle Ridge (Zen+, family 0x17 model 0x08) CPUs don't > - * support PCIe dynamic speed switching. > - * https://gitlab.freedesktop.org/drm/amd/-/work_items/5436 > - */ > - if (c->x86_vendor == X86_VENDOR_AMD && c->x86 == 0x17 && > - c->x86_model == 0x08) > - return false; > -#endif > return true; > } > +#else > +static inline bool amdgpu_device_pcie_dynamic_switching_supported(struct > amdgpu_device *adev) > +{ > + return true; > +} > +#endif > > static bool amdgpu_device_aspm_support_quirk(struct amdgpu_device *adev) > { > -- > 2.43.0 >
