A requirement has come up recently to be able to read system SoC packages
identifiers from userspace [0].
For device tree FW-based systems, this would be quite straightforward, in
that we could add a soc driver for that system and use the DT model
identifier as the soc id - that's how most soc drivers seem to do it.
For ACPI-based systems, the only place I know to get (put) such SoC
information is in the PPTT, specifically the ID Type Structure for a
processor package node. A processor package node describes a physical
boundary of a processor topology.
The ACPI spec does not declare how the fields in this structure must be
used, however it does provide pretty clear examples, which I would expect
most implementers to follow. As such, I try to solve the problem in 2
parts:
- Add ACPI PPTT API to get opaque package structure
- Add basic ACPI generic soc driver, which can interpret the fields
for known platforms to fill in the ID Type Structure as per example
in the spec.
So I'm hoping here for some comments on this approach - hence the RFC.
I've cc'ed some folks which may have suggestions.
[0] https://lore.kernel.org/linux-arm-kernel/1579876505-113251-6-git-send-email-john.garry@xxxxxxxxxx/ ,
https://lore.kernel.org/linux-arm-kernel/1579876505-113251-1-git-send-email-john.garry@xxxxxxxxxx/
John Garry (2):
ACPI/PPTT: Add acpi_pptt_get_package_info() API
soc: Add a basic ACPI generic driver
drivers/acpi/pptt.c | 81 +++++++++++++++++++++++++++++
drivers/soc/Makefile | 1 +
drivers/soc/acpi_generic.c | 102 +++++++++++++++++++++++++++++++++++++
include/linux/acpi.h | 13 +++++
4 files changed, 197 insertions(+)
create mode 100644 drivers/soc/acpi_generic.c