summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChristian Loehle <christian.loehle@arm.com>2026-08-03 22:05:26 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2026-08-05 15:09:45 +0200
commit9c5ab33a6d2cfa34a6d64c819503f7bfd837bb78 (patch)
tree856947b85c22359987314ab3851436a91b689637 /include
parent9d9157ee90e3eed393e92b4032b83ddb8691de64 (diff)
ACPI: CPPC: Avoid locking standalone full-width registers
cpc_write() serializes every SystemMemory write with the per-CPU rmw_lock. The lock is required for read-modify-write fields and for registers whose access units overlap, but not for a full-width register in a standalone access unit. The _CPC layout is immutable after it has been parsed. Classify each SystemMemory register at probe time and retain locking for partial fields, invalid access widths, and overlapping access units. Allow standalone full-width registers to bypass the descriptor lookup and spinlock. Store the classification in existing structure padding so that struct cpc_register_resource does not grow. Signed-off-by: Christian Loehle <christian.loehle@arm.com> Link: https://patch.msgid.link/20260803210527.1285229-3-christian.loehle@arm.com Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include')
-rw-r--r--include/acpi/cppc_acpi.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/include/acpi/cppc_acpi.h b/include/acpi/cppc_acpi.h
index 8c191b9ac18f..19830146c644 100644
--- a/include/acpi/cppc_acpi.h
+++ b/include/acpi/cppc_acpi.h
@@ -69,7 +69,10 @@ struct cpc_register_resource {
acpi_object_type type;
u64 __iomem *sys_mem_vaddr;
union {
- struct cpc_reg reg;
+ struct {
+ struct cpc_reg reg;
+ bool use_rmw_lock;
+ };
u64 int_value;
} cpc_entry;
};