summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMarc Jones <marcj303@gmail.com>2022-03-01 16:02:43 -0700
committerMarc Jones <marcj303@gmail.com>2022-03-25 12:08:02 -0600
commitfc00da7aa878cf46b76735bde3952ac1e82bd944 (patch)
tree5dd434902f75714944906f2015e08cb209b83f15 /source
parent0914618b553d6f3366e568409cebf2656891ca69 (diff)
downloadacpica-fc00da7aa878cf46b76735bde3952ac1e82bd944.tar.gz
Add DMAR SATC structure to iasl
Add the DMAR SATC structure support from the Intel ® Virtualization Technology for Directed I/O \ Architecture Specification, Rev. 3.4, Order Number: D51397-014 Test: $ iasl -d dmar.dat -> dmar.dsl $ iasl dmar.dsl -> dmar.aml $ cmp dmar.dat dmar.dsl Signed-off-by: Marc Jones <marcj303@gmail.com>
Diffstat (limited to 'source')
-rw-r--r--source/common/dmtable.c1
-rw-r--r--source/common/dmtbdump1.c6
-rw-r--r--source/common/dmtbinfo1.c9
-rw-r--r--source/compiler/dttable1.c5
-rw-r--r--source/compiler/dttemplate.h10
-rw-r--r--source/include/acdisasm.h1
-rw-r--r--source/include/actbinfo.h1
-rw-r--r--source/include/actbl1.h15
8 files changed, 43 insertions, 5 deletions
diff --git a/source/common/dmtable.c b/source/common/dmtable.c
index 081f50975..3bcc55949 100644
--- a/source/common/dmtable.c
+++ b/source/common/dmtable.c
@@ -248,6 +248,7 @@ static const char *AcpiDmDmarSubnames[] =
"Root Port ATS Capability",
"Remapping Hardware Static Affinity",
"ACPI Namespace Device Declaration",
+ "SoC Integrated Address Translation Cache",
"Unknown Subtable Type" /* Reserved */
};
diff --git a/source/common/dmtbdump1.c b/source/common/dmtbdump1.c
index c5b5a2f07..66333c9ae 100644
--- a/source/common/dmtbdump1.c
+++ b/source/common/dmtbdump1.c
@@ -1004,6 +1004,12 @@ AcpiDmDumpDmar (
ScopeOffset = sizeof (ACPI_DMAR_ANDD);
break;
+ case ACPI_DMAR_TYPE_SATC:
+
+ InfoTable = AcpiDmTableInfoDmar5;
+ ScopeOffset = sizeof (ACPI_DMAR_SATC);
+ break;
+
default:
AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
diff --git a/source/common/dmtbinfo1.c b/source/common/dmtbinfo1.c
index bb9d4b9da..d6a94bfc1 100644
--- a/source/common/dmtbinfo1.c
+++ b/source/common/dmtbinfo1.c
@@ -790,6 +790,15 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[] =
ACPI_DMT_TERMINATOR
};
+/* 5: Hardware Unit Definition */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoDmar5[] =
+{
+ {ACPI_DMT_UINT8, ACPI_DMAR5_OFFSET (Flags), "Flags", 0},
+ {ACPI_DMT_UINT8, ACPI_DMAR5_OFFSET (Reserved), "Reserved", 0},
+ {ACPI_DMT_UINT16, ACPI_DMAR5_OFFSET (Segment), "PCI Segment Number", 0},
+ ACPI_DMT_TERMINATOR
+};
/*******************************************************************************
*
diff --git a/source/compiler/dttable1.c b/source/compiler/dttable1.c
index 66348535e..cb7b7f4b8 100644
--- a/source/compiler/dttable1.c
+++ b/source/compiler/dttable1.c
@@ -1055,6 +1055,11 @@ DtCompileDmar (
InfoTable = AcpiDmTableInfoDmar4;
break;
+ case ACPI_DMAR_TYPE_SATC:
+
+ InfoTable = AcpiDmTableInfoDmar5;
+ break;
+
default:
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR");
diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h
index 08c76f6cb..882d99c19 100644
--- a/source/compiler/dttemplate.h
+++ b/source/compiler/dttemplate.h
@@ -471,11 +471,11 @@ const unsigned char TemplateDbgp[] =
const unsigned char TemplateDmar[] =
{
- 0x44,0x4D,0x41,0x52,0x8C,0x00,0x00,0x00, /* 00000000 "DMAR...." */
- 0x01,0x03,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
+ 0x44,0x4D,0x41,0x52,0x9C,0x00,0x00,0x00, /* 00000000 "DMAR...." */
+ 0x01,0xB8,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
- 0x17,0x05,0x13,0x20,0x2F,0x01,0x00,0x00, /* 00000020 "... /..." */
+ 0x17,0x12,0x21,0x20,0x2F,0x01,0x00,0x00, /* 00000020 "..! /..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
0x00,0x00,0x18,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
@@ -488,7 +488,9 @@ const unsigned char TemplateDmar[] =
0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x03, /* 00000070 "........" */
0x03,0x00,0x14,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
- 0x00,0x00,0x00,0x00 /* 00000088 "...." */
+ 0x00,0x00,0x00,0x00,0x05,0x00,0x10,0x00, /* 00000088 "........" */
+ 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00, /* 00000090 "........" */
+ 0x00,0x00,0x00,0x02 /* 00000098 "...." */
};
const unsigned char TemplateDrtm[] =
diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h
index 08565d56c..f1715fa16 100644
--- a/source/include/acdisasm.h
+++ b/source/include/acdisasm.h
@@ -425,6 +425,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar4[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar5[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm0a[];
diff --git a/source/include/actbinfo.h b/source/include/actbinfo.h
index 191eb3069..e10ffeecc 100644
--- a/source/include/actbinfo.h
+++ b/source/include/actbinfo.h
@@ -247,6 +247,7 @@
#define ACPI_DMAR2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f)
#define ACPI_DMAR3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f)
#define ACPI_DMAR4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ANDD,f)
+#define ACPI_DMAR5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_SATC,f)
#define ACPI_DRTM0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST,f)
#define ACPI_DRTM1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST,f)
#define ACPI_DRTM1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DRTM_RESOURCE,f)
diff --git a/source/include/actbl1.h b/source/include/actbl1.h
index be61e1247..3de78b0d8 100644
--- a/source/include/actbl1.h
+++ b/source/include/actbl1.h
@@ -853,7 +853,8 @@ enum AcpiDmarType
ACPI_DMAR_TYPE_ROOT_ATS = 2,
ACPI_DMAR_TYPE_HARDWARE_AFFINITY = 3,
ACPI_DMAR_TYPE_NAMESPACE = 4,
- ACPI_DMAR_TYPE_RESERVED = 5 /* 5 and greater are reserved */
+ ACPI_DMAR_TYPE_SATC = 5,
+ ACPI_DMAR_TYPE_RESERVED = 6 /* 6 and greater are reserved */
};
@@ -968,6 +969,18 @@ typedef struct acpi_dmar_andd
} ACPI_DMAR_ANDD;
+/* 5: SoC Integrated Address Translation Cache (SATC) */
+
+typedef struct acpi_dmar_satc
+{
+ ACPI_DMAR_HEADER Header;
+ UINT8 Flags;
+ UINT8 Reserved;
+ UINT16 Segment;
+
+} ACPI_DMAR_SATC
+
+;
/*******************************************************************************
*
* DRTM - Dynamic Root of Trust for Measurement table