linux/include/acpi
Henry Tseng 16fb8d8a0e cpufreq: acpi-cpufreq: use DMI max speed when CPPC is unavailable
On AMD Ryzen Embedded V1780B (Family 17h, Zen 1), the BIOS does not
provide ACPI _CPC objects and the CPU does not support MSR-based CPPC
(X86_FEATURE_CPPC).  The _PSS table only lists nominal P-states
(P0 = 3350 MHz), so when get_max_boost_ratio() fails at
cppc_get_perf_caps(), cpuinfo_max_freq reports only the base frequency
instead of the rated boost frequency (3600 MHz).

  dmesg:
    ACPI CPPC: No CPC descriptor for CPU:0
    acpi_cpufreq: CPU0: Unable to get performance capabilities (-19)

cppc-cpufreq already has a DMI fallback (cppc_get_dmi_max_khz()) that
reads the processor max speed from SMBIOS Type 4.  Export it and reuse
it in acpi-cpufreq as a last-resort source for the boost frequency.

A sanity check ensures the DMI value is above the _PSS P0 frequency
and within 2x of it; values outside that range are ignored and the
existing arch_set_max_freq_ratio() path is taken instead.  The 2x
upper bound is based on a survey of the AMD Ryzen Embedded V1000
series, where the highest boost-to-base ratio is 1.8x (V1404I:
2.0 GHz base / 3.6 GHz boost).

The DMI lookup and sanity check are wrapped in a helper,
acpi_cpufreq_resolve_max_freq(), which falls through to
arch_set_max_freq_ratio() if the DMI value is absent or
out of range.

Tested on AMD Ryzen Embedded V1780B with v7.0-rc4:

  Before: cpuinfo_max_freq = 3350000 (base only)
  After:  cpuinfo_max_freq = 3600000 (includes boost)

Link: https://www.amd.com/en/products/embedded/ryzen/ryzen-v1000-series.html#specifications
Signed-off-by: Henry Tseng <henrytseng@qnap.com>
Link: https://patch.msgid.link/20260324090948.1667340-1-henrytseng@qnap.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2026-03-25 14:29:05 +01:00
..
platform ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acbuffer.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acconfig.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acexcep.h ACPICA: Print error messages for too few or too many arguments 2025-09-15 12:20:13 +02:00
acnames.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acoutput.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acpi.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acpi_bus.h
acpi_drivers.h ACPI: PCI: IRQ: Fix INTx GSIs signedness 2026-01-05 19:06:40 +01:00
acpi_io.h
acpi_lpat.h
acpi_numa.h
acpiosxf.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acpixf.h ACPICA: Logfile: Changes for version 20251212 2026-01-15 18:17:50 +01:00
acrestyp.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
actbl.h ACPICA: Apply ACPI_NONSTRING 2025-09-15 12:20:12 +02:00
actbl1.h ACPICA: Refactor for TPR Base/Limit registers bitmasks 2026-01-15 18:17:50 +01:00
actbl2.h ACPICA: actbl2.h: ACPI 6.6: RAS2: Update Parameter Block structure 2026-01-15 18:17:49 +01:00
actbl3.h ACPICA: actbl3.h: ACPI 6.6: SRAT: New flag in Memory Affinity Structure 2026-01-15 18:17:49 +01:00
actypes.h ACPICA: Update copyright year 2025-05-12 15:38:43 +02:00
acuuid.h ACPICA: Add UUIDs associated with TPM 2.0 devices 2026-01-15 18:17:47 +01:00
apei.h
battery.h
button.h
cppc_acpi.h cpufreq: acpi-cpufreq: use DMI max speed when CPPC is unavailable 2026-03-25 14:29:05 +01:00
ghes.h ACPI: APEI: GHES: Improve ghes_notify_nmi() status check 2026-01-14 17:05:05 +01:00
hed.h
nfit.h
nhlt.h
pcc.h Revert "mailbox/pcc: support mailbox management of the shared buffer" 2026-01-18 14:19:20 -06:00
proc_cap_intel.h
processor.h ACPI: processor: Do not expose global variable acpi_idle_driver 2026-01-09 22:38:22 +01:00
reboot.h
video.h