Hi, On 2/2/23 02:07, Srinivas Pandruvada wrote: > The TPMI (Topology Aware Register and PM Capsule Interface) provides a > flexible, extendable and PCIe enumerable MMIO interface for PM features. > > For example Intel Speed Select Technology (Intel SST) can replace all > mailbox commands with direct MMIO access. This reduces latency for > SST commands and also defines an architectural interface which will > persist for several next generations. > > Also Intel RAPL (Running Average Power Limit) provides a MMIO > interface using TPMI. This has advantage over traditional MSR > (Model Specific Register) interface, where a thread needs to be scheduled > on the target CPU to read or write. Also the RAPL features vary between > CPU models, and hence lot of model specific code. Here TPMI provides an > architectural interface by providing hierarchical tables and fields, > which will not need any model specific implementation. > > Same value is for Intel Uncore frequency where MSR interface can't > be used because of multiple domains. > > The TPMI interface uses a PCI VSEC structure to expose the location of > MMIO region, which is handled by Intel VSEC driver. Intel VSEC driver is > already present in upstream kernel. > > This series contains the base driver, which parses TPMI MMIO region > and creates device nodes for supported features. The current set of > PM feature support includes, Intel Speed Select, RAPL, Uncore frequency > scaling. > > The first there patches updates Intel VSEC driver to add TPMI VSEC ID > and enhance to reuse the code. > The next three patches adds TPMI base driver support. > The last patch adds MAINTAINERS entry. > > The TPMI documentation can be downloaded from: > https://github.com/intel/tpmi_power_management > > This series cleanly applies on 6.2-rc1. Thank you for your patch-series, I've applied the series to my review-hans branch: https://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86.git/log/?h=review-hans Note it will show up in my review-hans branch once I've pushed my local branch there, which might take a while. Once I've run some tests on this branch the patches there will be added to the platform-drivers-x86/for-next branch and eventually will be included in the pdx86 pull-request to Linus for the next merge-window. Regards, Hans > Srinivas Pandruvada (7): > platform/x86/intel/vsec: Add TPMI ID > platform/x86/intel/vsec: Enhance and Export intel_vsec_add_aux() > platform/x86/intel/vsec: Support private data > platform/x86/intel: Intel TPMI enumeration driver > platform/x86/intel/tpmi: Process CPU package mapping > platform/x86/intel/tpmi: ADD tpmi external interface for tpmi feature > drivers > MAINTAINERS: Add entry for TPMI driver > > MAINTAINERS | 6 + > drivers/platform/x86/intel/Kconfig | 13 + > drivers/platform/x86/intel/Makefile | 4 + > drivers/platform/x86/intel/tpmi.c | 415 ++++++++++++++++++++++++++++ > drivers/platform/x86/intel/vsec.c | 21 +- > drivers/platform/x86/intel/vsec.h | 6 + > include/linux/intel_tpmi.h | 30 ++ > 7 files changed, 490 insertions(+), 5 deletions(-) > create mode 100644 drivers/platform/x86/intel/tpmi.c > create mode 100644 include/linux/intel_tpmi.h >