linux/drivers/acpi
Clément Léger 60949b7b80 ACPI: CPPC: Fix MASK_VAL() usage
MASK_VAL() was added as a way to handle bit_offset and bit_width for
registers located in system memory address space. However, while suited
for reading, it does not work for writing and result in corrupted
registers when writing values with bit_offset > 0. Moreover, when a
register is collocated with another one at the same address but with a
different mask, the current code results in the other registers being
overwritten with 0s. The write procedure for SYSTEM_MEMORY registers
should actually read the value, mask it, update it and write it with the
updated value. Moreover, since registers can be located in the same
word, we must take care of locking the access before doing it. We should
potentially use a global lock since we don't know in if register
addresses aren't shared with another _CPC package but better not
encourage vendors to do so. Assume that registers can use the same word
inside a _CPC package and thus, use a per _CPC package lock.

Fixes: 2f4a4d63a1 ("ACPI: CPPC: Use access_width over bit_width for system memory accesses")
Signed-off-by: Clément Léger <cleger@rivosinc.com>
Link: https://patch.msgid.link/20240826101648.95654-1-cleger@rivosinc.com
[ rjw: Dropped redundant semicolon ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-09-02 14:24:40 +02:00
..
acpica ACPICA: Add a depth argument to acpi_execute_reg_methods() 2024-08-13 13:44:57 +02:00
apei Merge branches 'acpi-ec', 'acpi-apei' and 'pnp' 2024-06-05 16:58:09 +02:00
arm64 IOMMU Updates for Linux v6.11 2024-07-19 09:59:58 -07: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 RISC-V Patches for the 6.11 Merge Window, Part 2 2024-07-27 10:14:34 -07:00
pmic ACPI: PMIC: Constify struct pmic_table 2024-07-01 20:06:02 +02:00
riscv ACPI: RISC-V: Add CPPC driver 2024-03-19 18:30:54 -07:00
x86 Merge branches 'acpi-x86', 'acpi-fan', 'acpi-soc' and 'acpi-cppc' 2024-07-15 19:04:15 +02:00
ac.c ACPI: AC: constify powersupply properties 2024-06-13 21:26:14 +02:00
acpi_adxl.c
acpi_apd.c ACPI: processor: Check for null return of devm_kzalloc() in fch_misc_setup() 2023-03-20 18:04:58 +01: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: FFH: Drop the inclusion of linux/arm-smccc.h 2023-06-12 19:28:20 +02:00
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 ACPI: acpi_pad: Still evaluate _OST when _PUR evaluation fails 2024-06-13 20:48:12 +02:00
acpi_pcc.c ACPI: PCC: Setup PCC Opregion handler only if platform interrupt is available 2022-11-23 19:06:56 +01:00
acpi_platform.c ACPI: platform: Move SMB0001 HID to the header and reuse 2023-07-04 19:28:20 +02:00
acpi_pnp.c ACPI: PNP: Introduce list of known non-PNP devices 2023-01-17 12:52:11 +01:00
acpi_processor.c ACPI updates for 6.11-rc1 2024-07-16 16:19:36 -07: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.11-rc1 2024-07-16 16:19:36 -07:00
bgrt.c treewide: Use sysfs_bin_attr_simple_read() helper 2024-04-11 16:02:25 +02:00
bus.c Driver core changes for 6.11-rc1 2024-07-25 10:42:22 -07:00
button.c ACPI: button: trigger wakeup key events 2023-12-29 18:47:49 +01:00
container.c ACPI: container: Use acpi_dev_for_each_child() 2022-06-20 20:33:05 +02:00
cppc_acpi.c ACPI: CPPC: Fix MASK_VAL() usage 2024-09-02 14:24:40 +02: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 Merge branches 'acpi-ec', 'acpi-sysfs', 'acpi-misc' and 'acpi-uid' 2023-10-26 14:59:52 +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 ACPI: EC: Evaluate _REG outside the EC scope more carefully 2024-08-13 13:45:14 +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 ACPI: fan: Convert to use sysfs_emit_at() API 2022-12-06 12:44:14 +01:00
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 ACPI: Fix selecting wrong ACPI fwnode for the iGPU on some Dell laptops 2023-01-10 20:23:48 +01:00
hed.c ACPI: bus: Add context argument to acpi_dev_install_notify_handler() 2023-10-06 17:32:51 +02:00
internal.h ACPI: EC: Evaluate _REG outside the EC scope more carefully 2024-08-13 13:45:14 +02:00
ioapic.c ACPI: Silence missing prototype warnings 2022-12-30 19:12:30 +01:00
irq.c ACPI: irq: Fix incorrect return value in acpi_register_gsi() 2023-10-18 13:11:04 +02:00
Kconfig ACPI: NHLT: Introduce API for the table 2024-03-27 16:36:45 +01: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 ACPI / PCI: fix LPIC IRQ model default PCI IRQ polarity 2022-11-26 12:57:18 +00:00
pci_link.c ACPI/PCI: Remove useless NULL pointer checks 2022-07-27 21:21:27 +02:00
pci_mcfg.c PCI: loongson: Add ACPI init support 2022-07-14 15:25:36 -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 ACPI: PM: Do not turn of unused power resources on the Toshiba Click Mini 2023-04-27 18:44:43 +02:00
pptt.c ACPI: PPTT: Fix to avoid sleep in the atomic context when PPTT is absent 2023-03-14 20:34:38 +01:00
prmt.c ACPI: PRM: Annotate struct prm_module_info with __counted_by 2023-10-03 21:24:10 +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: Simplify initial onlining to use same path for cold and hotplug 2024-06-28 18:38:27 +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 ACPI: processor: perflib: Avoid updating frequency QoS unnecessarily 2022-12-30 19:10:02 +01:00
processor_thermal.c ACPI: processor: reduce CPUFREQ thermal reduction pctg for Tegra241 2023-12-06 20:52:47 +01:00
processor_throttling.c ACPI: processor: throttling: remove variable count 2022-10-28 19:02:45 +02:00
property.c ACPI: property: Add reference to UEFI DSD Guide 2024-04-26 19:00:47 +02:00
reboot.c
resource.c ACPI: resource: Skip IRQ override on Asus Vivobook Pro N6506MJ 2024-07-09 18:15:49 +02:00
sbs.c ACPI: SBS: manage alarm sysfs attribute through psy core 2024-06-13 21:30:00 +02:00
sbshc.c ACPI: make remove callback of ACPI driver void 2022-11-23 19:11:22 +01:00
sbshc.h
scan.c ACPI: EC: Evaluate _REG outside the EC scope more carefully 2024-08-13 13:45:14 +02:00
sleep.c More ACPI updates for 6.9-rc1 2024-03-19 11:15:14 -07:00
sleep.h ACPI: s2idle: Add a new ->check() callback for platform_s2idle_ops 2022-09-09 17:37:40 +02:00
spcr.c ACPI: SPCR: Amend indentation 2023-03-27 20:50:28 +02:00
sysfs.c ACPI: sysfs: Enable ACPI sysfs support for CCEL records 2023-03-27 20:43:58 +02:00
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: Invalidate trip points with temperature of 0 or below 2024-06-07 13:52:17 +02:00
tiny-power-button.c ACPI: tiny-power-button: Eliminate the driver notify callback 2023-06-16 19:48:09 +02:00
utils.c ACPI: utils: introduce acpi_get_local_u64_address() 2024-06-10 12:48:09 +01:00
video_detect.c ACPI: video: Add backlight=native quirk for Dell OptiPlex 7760 AIO 2024-08-19 15:58:52 +02:00
viot.c iommu: Resolve fwspec ops automatically 2024-07-04 14:36:03 +01:00
wakeup.c