linux/drivers/acpi
Mario Limonciello b79276dcac ACPI: processor: Move arch_init_invariance_cppc() call later
arch_init_invariance_cppc() is called at the end of
acpi_cppc_processor_probe() in order to configure frequency invariance
based upon the values from _CPC.

This however doesn't work on AMD CPPC shared memory designs that have
AMD preferred cores enabled because _CPC needs to be analyzed from all
cores to judge if preferred cores are enabled.

This issue manifests to users as a warning since commit 21fb59ab4b
("ACPI: CPPC: Adjust debug messages in amd_set_max_freq_ratio() to warn"):
```
Could not retrieve highest performance (-19)
```

However the warning isn't the cause of this, it was actually
commit 279f838a61 ("x86/amd: Detect preferred cores in
amd_get_boost_ratio_numerator()") which exposed the issue.

To fix this problem, change arch_init_invariance_cppc() into a new weak
symbol that is called at the end of acpi_processor_driver_init().
Each architecture that supports it can declare the symbol to override
the weak one.

Define it for x86, in arch/x86/kernel/acpi/cppc.c, and for all of the
architectures using the generic arch_topology.c code.

Fixes: 279f838a61 ("x86/amd: Detect preferred cores in amd_get_boost_ratio_numerator()")
Reported-by: Ivan Shapovalov <intelfx@intelfx.name>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219431
Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
Link: https://patch.msgid.link/20241104222855.3959267-1-superm1@kernel.org
[ rjw: Changelog edit ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-11-06 21:31:36 +01:00
..
acpica Merge branch 'acpica' 2024-09-11 21:42:20 +02:00
apei cxl fixes for 6.12-rc2 2024-10-05 10:40:16 -07:00
arm64 ACPI/IORT: Add PMCG platform information for HiSilicon HIP10/11 2024-08-20 14:14:07 +01:00
dptf ACPI: DPTF: Add Lunar Lake support 2024-04-08 16:10:27 +02:00
nfit ACPI: NFIT: add missing MODULE_DESCRIPTION() macro 2024-06-17 18:41:17 -05:00
numa mm: introduce numa_memblks 2024-09-03 21:15:30 -07:00
pmic ACPI: PMIC: Remove unneeded check in tps68470_pmic_opregion_probe() 2024-08-02 17:05:08 +02:00
riscv ACPI: RISC-V: Implement function to add implicit dependencies 2024-08-27 15:48:35 +02:00
x86 ACPI: x86: Make Lenovo Yoga Tab 3 X90F DMI match less strict 2024-08-29 12:47:53 +02:00
ac.c ACPI: AC: Use strscpy() instead of strcpy() 2024-08-26 19:11:58 +02:00
acpi_adxl.c
acpi_apd.c ACPI: APD: Add AMDI0015 as platform device 2024-08-20 16:34:47 +02:00
acpi_configfs.c
acpi_dbg.c
acpi_extlog.c ACPI: extlog: Clear Extended Error Log status when RAS_CEC handled the error 2023-12-13 13:50:00 +01:00
acpi_ffh.c
acpi_fpdt.c ACPI: FPDT: properly handle invalid FPDT subtables 2023-10-03 21:12:22 +02:00
acpi_ipmi.c ACPI: IPMI: Add helper to wait for when SMI is selected 2024-04-28 10:07:34 -07:00
acpi_lpat.c
acpi_lpit.c ACPI: LPIT: Avoid u32 multiplication overflow 2023-11-22 20:55:20 +01:00
acpi_memhotplug.c mm/memory_hotplug: allow memmap on memory hotplug request to fallback 2023-08-21 13:37:48 -07:00
acpi_pad.c Merge branches 'acpi-video', 'acpi-resource', 'acpi-pad' and 'acpi-misc' 2024-09-11 22:05:16 +02:00
acpi_pcc.c
acpi_platform.c
acpi_pnp.c
acpi_processor.c Merge branches 'acpi-video', 'acpi-resource', 'acpi-pad' and 'acpi-misc' 2024-09-11 22:05:16 +02:00
acpi_tad.c ACPI: add missing MODULE_DESCRIPTION() macros 2024-06-13 21:06:30 +02:00
acpi_video.c ACPI: video: Use strscpy() instead of strcpy() 2024-07-04 14:21:37 +02:00
acpi_watchdog.c ACPI: use %pe for better readability of errors while printing 2024-02-16 19:31:12 +01:00
battery.c ACPI updates for 6.12-rc2 2024-10-04 11:59:36 -07:00
bgrt.c treewide: Use sysfs_bin_attr_simple_read() helper 2024-04-11 16:02:25 +02:00
bus.c ACPI: bus: Add RINTC IRQ model for RISC-V 2024-08-27 15:48:35 +02:00
button.c ACPI: button: Add DMI quirk for Samsung Galaxy Book2 to fix initial lid detection issue 2024-10-21 14:00:59 +02:00
container.c
cppc_acpi.c ACPI: processor: Move arch_init_invariance_cppc() call later 2024-11-06 21:31:36 +01:00
debugfs.c
device_pm.c ACPI: PM: Add acpi_device_fix_up_power_children() function 2023-11-20 17:31:49 +01:00
device_sysfs.c ACPI: sysfs: remove return value of acpi_device_setup_files() 2024-08-02 16:44:22 +02:00
dock.c ACPI: scan: Introduce typedef:s for struct acpi_hotplug_context members 2024-04-04 21:19:02 +02:00
ec_sys.c
ec.c Merge an earlier EC driver change for 6.12. 2024-08-19 14:38:41 +02:00
event.c
evged.c ACPI: GED: Convert to platform remove callback returning void 2024-02-27 15:57:33 +01:00
fan_attr.c
fan_core.c ACPI: fan: Add hwmon support 2024-05-28 11:53:35 +02:00
fan_hwmon.c ACPI: fan: Add hwmon support 2024-05-28 11:53:35 +02:00
fan.h ACPI: fan: Add hwmon support 2024-05-28 11:53:35 +02:00
glue.c
hed.c ACPI: bus: Add context argument to acpi_dev_install_notify_handler() 2023-10-06 17:32:51 +02:00
internal.h Merge branches 'acpi-ec', 'acpi-sysfs', 'acpi-utils' and 'acpi-soc' 2024-09-11 21:45:36 +02:00
ioapic.c
irq.c ACPI: irq: Fix incorrect return value in acpi_register_gsi() 2023-10-18 13:11:04 +02:00
Kconfig LoongArch: Enable ACPI BGRT handling 2024-09-24 15:32:06 +08:00
Makefile ACPI: fan: Add hwmon support 2024-05-28 11:53:35 +02:00
mipi-disco-img.c ACPI: mipi-disco-img: Switch to new Intel CPU model defines 2024-06-17 21:37:57 +02:00
nhlt.c ACPI: NHLT: Streamline struct naming 2024-03-27 16:36:45 +01:00
nvs.c
osi.c ACPI: OSI: refactor deprecated strncpy() 2023-09-21 20:55:43 +02:00
osl.c ACPI: OSL: Use spin locks without disabling interrupts 2023-12-28 14:13:52 +01:00
pci_irq.c xen/pvh: Setup gsi for passthrough device 2024-09-25 09:54:52 +02:00
pci_link.c ACPI: pci_link: Clear the dependencies after probe 2024-08-27 15:48:35 +02:00
pci_mcfg.c PCI/ACPI: Increase Loongson max PCI hosts to 8 2024-08-01 18:04:05 -05:00
pci_root.c Merge branch 'pci/misc' 2024-07-19 10:10:33 -05:00
pci_slot.c ACPI: use %pe for better readability of errors while printing 2024-02-16 19:31:12 +01:00
pfr_telemetry.c ACPI: pfr_telemetry: Convert to platform remove callback returning void 2024-02-27 15:57:34 +01:00
pfr_update.c ACPI: pfr_update: Convert to platform remove callback returning void 2024-02-27 15:57:34 +01:00
platform_profile.c ACPI: add missing MODULE_DESCRIPTION() macros 2024-06-13 21:06:30 +02:00
power.c
pptt.c
prmt.c ACPI: PRM: Clean up guid type in struct prm_handler_info 2024-10-24 17:31:41 +02:00
proc.c
processor_core.c Updates for the interrupt subsystem: 2024-07-22 13:52:05 -07:00
processor_driver.c ACPI: processor: Move arch_init_invariance_cppc() call later 2024-11-06 21:31:36 +01:00
processor_idle.c ACPI: processor_idle: Fix invalid comparison with insertion sort for latency 2024-07-02 20:35:29 +02:00
processor_pdc.c ACPI: processor: Fix uninitialized access of buf in acpi_set_pdc_bits() 2023-09-18 12:16:16 +02:00
processor_perflib.c
processor_thermal.c ACPI: processor: reduce CPUFREQ thermal reduction pctg for Tegra241 2023-12-06 20:52:47 +01:00
processor_throttling.c
property.c ACPI: property: Add reference to UEFI DSD Guide 2024-04-26 19:00:47 +02:00
reboot.c
resource.c ACPI: resource: Add LG 16T90SP to irq1_level_low_skip_override[] 2024-10-21 13:54:57 +02:00
sbs.c ACPI: SBS: manage alarm sysfs attribute through psy core 2024-06-13 21:30:00 +02:00
sbshc.c
sbshc.h
scan.c Merge branches 'acpi-ec', 'acpi-sysfs', 'acpi-utils' and 'acpi-soc' 2024-09-11 21:45:36 +02:00
sleep.c ACPI: PM: Quirk ASUS ROG M16 to default to S3 sleep 2024-09-10 20:19:52 +02:00
sleep.h
spcr.c
sysfs.c
tables.c ACPI: tables: Print MULTIPROC_WAKEUP when MADT is parsed 2024-06-17 17:46:28 +02:00
thermal_lib.c ACPI: thermal_lib: Initialize temp_decik to zero 2024-02-22 20:36:17 +01:00
thermal.c thermal: ACPI: Use the .should_bind() thermal zone callback 2024-08-22 17:43:14 +02:00
tiny-power-button.c
utils.c ACPI: utils: Add rev/func to message when acpi_evaluate_dsm() fails 2024-08-29 13:34:09 +02:00
video_detect.c ACPI: video: Add backlight=native quirk for Dell OptiPlex 5480 AIO 2024-10-01 20:51:26 +02:00
viot.c iommu: Resolve fwspec ops automatically 2024-07-04 14:36:03 +01:00
wakeup.c