Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ACPICA: IORT: Add PMCG node supprt

PMCG nodes were added by IORT revision C, with the unfortunate oversight
that it only defined a single base address, and thus was incapable of
properly describing PMCG implementations with PMCG_CFGR.RELOC_CTRS = 1,
where the counters are in a separate page from the control registers.

Revision D corrects this by clarifying the existing field as the page 0
base address and adding a second field to describe the page 1 address
when implemented. With the spec now fit for purpose, let's support it.

Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

authored by

Robin Murphy and committed by
Rafael J. Wysocki
a53eaef6 d87be043

+9 -1
+9 -1
include/acpi/actbl2.h
··· 98 98 ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 99 99 ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 100 100 ACPI_IORT_NODE_SMMU = 0x03, 101 - ACPI_IORT_NODE_SMMU_V3 = 0x04 101 + ACPI_IORT_NODE_SMMU_V3 = 0x04, 102 + ACPI_IORT_NODE_PMCG = 0x05 102 103 }; 103 104 104 105 struct acpi_iort_id_mapping { ··· 232 231 #define ACPI_IORT_SMMU_V3_COHACC_OVERRIDE (1) 233 232 #define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (3<<1) 234 233 #define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) 234 + 235 + struct acpi_iort_pmcg { 236 + u64 page0_base_address; 237 + u32 overflow_gsiv; 238 + u32 node_reference; 239 + u64 page1_base_address; 240 + }; 235 241 236 242 /******************************************************************************* 237 243 *