mirror-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: bus: implement acpi_device_hid when !ACPI 2024-12-19 20:59:36 +01:00
acpi_drivers.h ACPI: PCI: IRQ: Fix INTx GSIs signedness 2026-01-05 19:06:40 +01:00
acpi_io.h Revert "ACPI: Add memory semantics to acpi_os_map_memory()" 2021-09-23 20:39:36 +02:00
acpi_lpat.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
acpi_numa.h mm/fake-numa: allow later numa node hotplug 2025-01-25 20:22:29 -08:00
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 ACPI: APEI: Fix missing ERST record id 2022-04-13 20:29:24 +02:00
battery.h ACPI: battery: add devm_battery_hook_register() 2024-07-01 21:22:18 +08:00
button.h ACPI: button: move HIDs to acpi/button.h 2020-02-13 23:36:23 +01:00
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 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 428 2019-06-05 17:37:16 +02:00
nfit.h acpi, nfit: Add function to look up nvdimm device and provide SMBIOS handle 2018-03-14 12:43:50 +01:00
nhlt.h ACPI: NHLT: Streamline struct naming 2024-03-27 16:36:45 +01:00
pcc.h Revert "mailbox/pcc: support mailbox management of the shared buffer" 2026-01-18 14:19:20 -06:00
proc_cap_intel.h ACPI: processor: Introduce acpi_processor_osc() 2023-07-14 17:59:40 +02:00
processor.h ACPI: processor: Do not expose global variable acpi_idle_driver 2026-01-09 22:38:22 +01:00
reboot.h
video.h ACPI: video: Add Dell UART backlight controller detection 2024-08-19 15:58:35 +02:00