All of lore.kernel.org
 help / color / mirror / Atom feed
From: "David E. Box" <david.e.box@linux.intel.com>
To: hansg@kernel.org, ilpo.jarvinen@linux.intel.com,
	irenic.rajneesh@gmail.com
Cc: "David E. Box" <david.e.box@linux.intel.com>,
	linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org,
	srinivas.pandruvada@linux.intel.com, xi.pardee@linux.intel.com
Subject: [PATCH v6 00/15] Add ACPI-based PMT discovery support for Intel PMC
Date: Sun, 31 May 2026 12:46:02 -0700	[thread overview]
Message-ID: <cover.1780248804.git.david.e.box@linux.intel.com> (raw)

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 onward includes the
remaining integration patches.

Testing:
Tested on Nova Lake S system and confirmed enumeration from both PCI and
ACPI enumerated PCD and PCH telemetry endpoints. Existing telemetry from
NVL CPU and an add-on Battlemage card also continued to work.

---
V6 changes:
- Squashed Xi Pardee's two patches (v5 patches 10 and 13) into a single
  patch (v6 patch 12). The two patches logically belonged together as
  they both addressed per-index probe state tracking and reentrant probe
  protection.
- Reordered v5 patch 12 ("Add PCI platform data") to v6 patch 10 to
  maintain better logical flow before the squashed probe state patch.
- Address other style and cleanup comments.

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: Add PCI platform data
  platform/x86/intel/pmc/ssram: Refactor DEVID/PWRMBASE extraction into
    helper
  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 (1):
  platform/x86/intel/pmc/ssram: Switch to static array with per-index
    probe state

 drivers/platform/x86/intel/pmc/Kconfig        |  25 ++
 drivers/platform/x86/intel/pmc/Makefile       |   2 +
 drivers/platform/x86/intel/pmc/core.h         |  16 +
 .../platform/x86/intel/pmc/pwrm_telemetry.c   | 216 ++++++++++
 .../platform/x86/intel/pmc/ssram_telemetry.c  | 376 +++++++++++++++---
 drivers/platform/x86/intel/pmt/class.c        | 156 +++++++-
 drivers/platform/x86/intel/pmt/class.h        |   6 +
 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, 769 insertions(+), 86 deletions(-)
 create mode 100644 drivers/platform/x86/intel/pmc/pwrm_telemetry.c


base-commit: 069b06f8dfc9cdb34221c854653e7f54535e98e1
--
2.43.0


             reply	other threads:[~2026-05-31 19:46 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-31 19:46 David E. Box [this message]
2026-05-31 19:46 ` [PATCH v6 01/15] platform/x86/intel/pmt: Add pre/post decode hooks around header parsing David E. Box
2026-05-31 19:46 ` [PATCH v6 02/15] platform/x86/intel/pmt/crashlog: Split init into pre-decode David E. Box
2026-05-31 19:46 ` [PATCH v6 03/15] platform/x86/intel/pmt/telemetry: Move overlap check to post-decode hook David E. Box
2026-05-31 19:46 ` [PATCH v6 04/15] platform/x86/intel/pmt: Pass discovery index instead of resource David E. Box
2026-05-31 19:46 ` [PATCH v6 05/15] platform/x86/intel/pmt: Cache the telemetry discovery header David E. Box
2026-05-31 19:46 ` [PATCH v6 06/15] platform/x86/intel/pmt: Unify header fetch and add ACPI source David E. Box
2026-05-31 19:46 ` [PATCH v6 07/15] platform/x86/intel/pmc: Add PMC SSRAM Kconfig description David E. Box
2026-05-31 19:46 ` [PATCH v6 08/15] platform/x86/intel/pmc: Add ACPI PWRM telemetry driver for Nova Lake S David E. Box
2026-05-31 19:46 ` [PATCH v6 09/15] platform/x86/intel/pmc/ssram: Rename probe and PCI ID table for consistency David E. Box
2026-05-31 19:46 ` [PATCH v6 10/15] platform/x86/intel/pmc/ssram: Add PCI platform data David E. Box
2026-05-31 19:46 ` [PATCH v6 11/15] platform/x86/intel/pmc/ssram: Refactor DEVID/PWRMBASE extraction into helper David E. Box
2026-05-31 19:46 ` [PATCH v6 12/15] platform/x86/intel/pmc/ssram: Switch to static array with per-index probe state David E. Box
2026-05-31 19:46 ` [PATCH v6 13/15] platform/x86/intel/pmc/ssram: Add ACPI discovery scaffolding David E. Box
2026-05-31 19:46 ` [PATCH v6 14/15] platform/x86/intel/pmc/ssram: Make PMT registration optional David E. Box
2026-05-31 19:46 ` [PATCH v6 15/15] platform/x86/intel/pmc: Add NVL PCI IDs for SSRAM telemetry discovery David E. Box

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1780248804.git.david.e.box@linux.intel.com \
    --to=david.e.box@linux.intel.com \
    --cc=hansg@kernel.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=irenic.rajneesh@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=srinivas.pandruvada@linux.intel.com \
    --cc=xi.pardee@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.