This series adds ACPI-based PMT discovery support and wires it into the
Intel PMC telemetry stack for Nova Lake S.
Today, PMT discovery flow is primarily PCI-oriented. Some platforms expose
PMT discovery via ACPI _DSD, and PMC telemetry needs to consume that path
for both standalone and companion-device cases. This series addresses that
in three logical steps:
1. Prepare intel_vsec for ACPI-backed discovery
2. Refactor PMT class handling so discovery source is
abstracted (PCI or ACPI)
3. Add/enable PMC consumers using ACPI discovery, including NVL
SSRAM support
Patches for step 1 were previously accepted. V4 includes the remaining
integration patches.
V5 changes:
- Addressed Ilpo Järvinen's review feedback on patches 08 and 14:
- Added #include <linux/limits.h> for U16_MAX in pwrm_telemetry.c.
- Split acpi_handle declaration from ACPI_HANDLE() assignment in both
pmc_pwrm_acpi_probe() and pmc_ssram_telemetry_acpi_init(). The
assignment now sits immediately above its !handle check.
- Reordered local variables in those two functions in reverse-xmas-tree
order.
- Patch 14: fixed a __free(pmc_acpi_free) ordering bug that caused
buf.pointer to leak. The cleanup variable is now declared after
acpi_evaluate_object() populates buf.pointer, and the GUID search
operates on the cleanup variable so its current value tracks the
actual allocation.
- Patches 05 and 06: bounded the new discovery-header memcpy_fromio()
to resource_size() of the mapped DVSEC entry. The cache introduced in
patch 05 (and the unified PCI header fetch in patch 06) would otherwise
read 16 bytes from namespaces whose DVSEC entry_size is only 3 dwords
(telemetry).
- Patch 06: documented in the ACPI branch that entry->disc_table = NULL
is intentional, so consumers that dereference disc_table must only be
wired to INTEL_VSEC_DISC_PCI namespaces.
- Remaining patches unchanged from v4.
V4 changes:
- Bound PMT discovery-header sizing to shared canonical definitions:
- Added INTEL_VSEC_ACPI_DISC_DWORDS in intel_vsec API.
- Added PMT_DISC_HEADER_DWORDS in PMT class, derived from the shared
definition.
- Replaced literal header copy sizes in PMT header fetch with size bound
to entry->disc_header.
- Updated PMC ACPI discovery typing to use shared acpi_disc_t consistently:
- acpi_disc_t now references INTEL_VSEC_ACPI_DISC_DWORDS.
- pmc_parse_telem_dsd() uses acpi_disc_t return type and
declaration-site allocation with __free(kfree).
- Included intel_vsec header in PMC core declarations to align type
ownership.
- In SSRAM ACPI scaffolding, switched temporary discovery pointer from raw
u32 (*)[4] to acpi_disc_t for consistency with exported PMC helper types.
- Remaining patches unchanged from v3.
V3 changes:
- Dropped "platform/x86/intel/pmt: Move header decode into common helper"
- The dropped patch caused a crashlog regression because disc_res was
accessed before assignment
- Updated the surrounding PMT patches to keep the needed ACPI header-fetch
work without the dropped helper
- Added "platform/x86/intel/pmt: Cache the telemetry discovery header"
to carry the post-v3 bug fix cleanly
- Dropped the standalone cleanup-pattern patch to keep the simpler
ssram pointer flow requested in review
David E. Box (14):
platform/x86/intel/pmt: Add pre/post decode hooks around header
parsing
platform/x86/intel/pmt/crashlog: Split init into pre-decode
platform/x86/intel/pmt/telemetry: Move overlap check to post-decode
hook
platform/x86/intel/pmt: Pass discovery index instead of resource
platform/x86/intel/pmt: Cache the telemetry discovery header
platform/x86/intel/pmt: Unify header fetch and add ACPI source
platform/x86/intel/pmc: Add PMC SSRAM Kconfig description
platform/x86/intel/pmc: Add ACPI PWRM telemetry driver for Nova Lake S
platform/x86/intel/pmc/ssram: Rename probe and PCI ID table for
consistency
platform/x86/intel/pmc/ssram: Refactor DEVID/PWRMBASE extraction into
helper
platform/x86/intel/pmc/ssram: Add PCI platform data
platform/x86/intel/pmc/ssram: Add ACPI discovery scaffolding
platform/x86/intel/pmc/ssram: Make PMT registration optional
platform/x86/intel/pmc: Add NVL PCI IDs for SSRAM telemetry discovery
Xi Pardee (2):
platform/x86/intel/pmc/ssram: Use fixed-size static pmc array
platform/x86/intel/pmc/ssram: Refactor memory barrier for reentrant
probe
drivers/platform/x86/intel/pmc/Kconfig | 25 ++
drivers/platform/x86/intel/pmc/Makefile | 2 +
drivers/platform/x86/intel/pmc/core.h | 21 ++
.../platform/x86/intel/pmc/pwrm_telemetry.c | 216 +++++++++++++++
.../platform/x86/intel/pmc/ssram_telemetry.c | 253 +++++++++++++-----
drivers/platform/x86/intel/pmt/class.c | 160 ++++++++++-
drivers/platform/x86/intel/pmt/class.h | 7 +
drivers/platform/x86/intel/pmt/crashlog.c | 19 +-
drivers/platform/x86/intel/pmt/telemetry.c | 34 ++-
include/linux/intel_vsec.h | 5 +-
10 files changed, 649 insertions(+), 93 deletions(-)
create mode 100644 drivers/platform/x86/intel/pmc/pwrm_telemetry.c
base-commit: 5d6919055dec134de3c40167a490f33c74c12581
--
2.43.0