diff options
| author | Christian Loehle <christian.loehle@arm.com> | 2026-09-16 17:27:57 +0100 |
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2026-09-18 17:29:08 +0200 |
| commit | 908a87126a7e484d60754104705d875b38c2cc20 (patch) | |
| tree | 96febaf7aba36816c6aac4ddda17a99b0cef553a /scripts/stackusage | |
| parent | ea5ed1f82e2273bf8c16eace6d701e2ea4e820d2 (diff) | |
| download | linux-908a87126a7e484d60754104705d875b38c2cc20.tar.gz linux-908a87126a7e484d60754104705d875b38c2cc20.zip | |
ACPI: CPPC: Validate PCC overlaps across processors
PCC shared-memory offsets are physical within a subspace, but the
existing overlap check stops at one _CPC package. Two processors can
therefore pass probe with writable ranges which overlap in the same PCC
subspace.
This is unsafe in the performance path, where CPUs may stage requests
concurrently while holding the shared side of pcc_lock. Partially
overlapping stores can construct a payload which belongs to neither
request before a doorbell submits it.
Index retained PCC byte ranges by subspace and physical interval. The
registry checks entries within the new descriptor as well as other CPUs,
replacing the separate same-descriptor PCC overlap pass. Permit
read-only overlap and exact aliases of the same logical CPPC entry. The
per-subspace payload lock serializes each exact-alias field store,
including multi-byte fields copied with byte-oriented I/O. Reject every
other overlap involving a writable entry.
Each CPC descriptor owns its interval records. Remove them when processor
teardown unpublishes the descriptor and on probe failure.
Fixes: 80b8286aeec0 ("ACPI / CPPC: support for batching CPPC requests")
Signed-off-by: Christian Loehle <christian.loehle@arm.com>
Tested-by: Sumit Gupta <sumitg@nvidia.com>
Link: https://patch.msgid.link/20260916162805.1039247-13-christian.loehle@arm.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'scripts/stackusage')
0 files changed, 0 insertions, 0 deletions
