platform/x86: Intel PMT class driver
authorAlexander Duyck <alexander.h.duyck@linux.intel.com>
Thu, 29 Oct 2020 01:55:34 +0000 (18:55 -0700)
committerLee Jones <lee.jones@linaro.org>
Wed, 4 Nov 2020 11:14:12 +0000 (11:14 +0000)
commite2729113ce66d8d21f729b41bc3ed3feaf1acf69
treeb9b9845c6a0f579e86357a274e7b61f45b9930d7
parent4f8217d5b0ca8ace78a27dc371b87697eedc421d
platform/x86: Intel PMT class driver

Intel Platform Monitoring Technology is meant to provide a common way to
access telemetry and system metrics.

Register mappings are not provided by the driver. Instead, a GUID is read
from a header for each endpoint. The GUID identifies the device and is to
be used with an XML, provided by the vendor, to discover the available set
of metrics and their register mapping.  This allows firmware updates to
modify the register space without needing to update the driver every time
with new mappings. Firmware writes a new GUID in this case to specify the
new mapping.  Software tools with access to the associated XML file can
then interpret the changes.

The module manages access to all Intel PMT endpoints on a system,
independent of the device exporting them. It creates an intel_pmt class
to manage the devices. For each telemetry endpoint, sysfs files provide
GUID and size information as well as a pointer to the parent device the
telemetry came from. Software may discover the association between
endpoints and devices by iterating through the list in sysfs, or by looking
for the existence of the class folder under the device of interest.  A
binary sysfs attribute of the same name allows software to then read or map
the telemetry space for direct access.

Signed-off-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Signed-off-by: David E. Box <david.e.box@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Documentation/ABI/testing/sysfs-class-intel_pmt [new file with mode: 0644]
MAINTAINERS
drivers/platform/x86/Kconfig
drivers/platform/x86/Makefile
drivers/platform/x86/intel_pmt_class.c [new file with mode: 0644]
drivers/platform/x86/intel_pmt_class.h [new file with mode: 0644]