aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Murphy <robin.murphy@arm.com>2018-06-01 15:06:39 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2018-06-06 02:53:42 -0400
commita53eaef6da5dc0abd899d6512a31c6d94c92f9be (patch)
tree66986c475fa5b42e6e98ba7e4f89a61984d5c12e
parentd87be0438e3d4e249926f0431bcec991e4a9eea6 (diff)
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>
-rw-r--r--include/acpi/actbl2.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 46dbc1018b2d..c50ef7e6b942 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -98,7 +98,8 @@ enum acpi_iort_node_type {
98 ACPI_IORT_NODE_NAMED_COMPONENT = 0x01, 98 ACPI_IORT_NODE_NAMED_COMPONENT = 0x01,
99 ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02, 99 ACPI_IORT_NODE_PCI_ROOT_COMPLEX = 0x02,
100 ACPI_IORT_NODE_SMMU = 0x03, 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
104struct acpi_iort_id_mapping { 105struct acpi_iort_id_mapping {
@@ -232,6 +233,13 @@ struct acpi_iort_smmu_v3 {
232#define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (3<<1) 233#define ACPI_IORT_SMMU_V3_HTTU_OVERRIDE (3<<1)
233#define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3) 234#define ACPI_IORT_SMMU_V3_PXM_VALID (1<<3)
234 235
236struct acpi_iort_pmcg {
237 u64 page0_base_address;
238 u32 overflow_gsiv;
239 u32 node_reference;
240 u64 page1_base_address;
241};
242
235/******************************************************************************* 243/*******************************************************************************
236 * 244 *
237 * IVRS - I/O Virtualization Reporting Structure 245 * IVRS - I/O Virtualization Reporting Structure