diff options
author | Robert Moore <Robert.Moore@intel.com> | 2022-03-29 10:05:41 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-29 10:05:41 -0700 |
commit | 72da34af75f955789d34c91253ae548a443e2afc (patch) | |
tree | 4205b8f5e88dc2dda2ef79e816f54f2ed096651b | |
parent | 06aec76730fe6da96550df6d196d76cb4f7be87d (diff) | |
parent | 87a2e39b8abdfedfb86b0a105708e37e895becd9 (diff) | |
download | acpica-72da34af75f955789d34c91253ae548a443e2afc.tar.gz |
Merge pull request #765 from shamiali2008/master-iort-revE.d-v2
IORT: Updates for revision E.d
-rw-r--r-- | source/common/dmtable.c | 7 | ||||
-rw-r--r-- | source/common/dmtbdump2.c | 4 | ||||
-rw-r--r-- | source/common/dmtbinfo2.c | 5 | ||||
-rw-r--r-- | source/compiler/dtfield.c | 6 | ||||
-rw-r--r-- | source/compiler/dttable1.c | 4 | ||||
-rw-r--r-- | source/compiler/dttemplate.h | 12 | ||||
-rw-r--r-- | source/compiler/dtutils.c | 2 | ||||
-rw-r--r-- | source/include/acdisasm.h | 1 | ||||
-rw-r--r-- | source/include/actbl2.h | 26 |
9 files changed, 53 insertions, 14 deletions
diff --git a/source/common/dmtable.c b/source/common/dmtable.c index 7535338e8..440c5fb40 100644 --- a/source/common/dmtable.c +++ b/source/common/dmtable.c @@ -1364,7 +1364,12 @@ AcpiDmDumpTable ( AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03); break; - case ACPI_DMT_FLAGS4: + case ACPI_DMT_FLAGS8_2: + + AcpiOsPrintf ("%2.2X\n", (*Target >> 2) & 0xFF); + break; + + case ACPI_DMT_FLAGS4: AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03); break; diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c index b18e27e68..c50a6a247 100644 --- a/source/common/dmtbdump2.c +++ b/source/common/dmtbdump2.c @@ -203,9 +203,9 @@ AcpiDmDumpIort ( Revision = Table->Revision; - /* Both IORT Rev E and E.a have known issues and are not supported */ + /* IORT Revisions E, E.a and E.c have known issues and are not supported */ - if (Revision == 1 || Revision == 2) + if (Revision == 1 || Revision == 2 || Revision == 4) { AcpiOsPrintf ("\n**** Unsupported IORT revision 0x%X\n", Revision); diff --git a/source/common/dmtbinfo2.c b/source/common/dmtbinfo2.c index cdd15c984..2c7d81785 100644 --- a/source/common/dmtbinfo2.c +++ b/source/common/dmtbinfo2.c @@ -357,7 +357,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort2[] = {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (AtsAttribute), "ATS Attribute", 0}, {ACPI_DMT_UINT32, ACPI_IORT2_OFFSET (PciSegmentNumber), "PCI Segment Number", 0}, {ACPI_DMT_UINT8, ACPI_IORT2_OFFSET (MemoryAddressLimit), "Memory Size Limit", 0}, - {ACPI_DMT_UINT24, ACPI_IORT2_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_IORT2_OFFSET (PasidCapabilities), "PASID Capabilities", 0}, + {ACPI_DMT_UINT8, ACPI_IORT2_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; @@ -441,6 +442,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIort6[] = { {ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (Flags), "Flags (decoded below)", 0}, {ACPI_DMT_FLAG0, ACPI_IORT6_FLAG_OFFSET (Flags, 0), "Remapping Permitted", 0}, + {ACPI_DMT_FLAG1, ACPI_IORT6_FLAG_OFFSET (Flags, 0), "Access Privileged", 0}, + {ACPI_DMT_FLAGS8_2, ACPI_IORT6_FLAG_OFFSET (Flags, 0), "Access Attributes", 0}, {ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (RmrCount), "Number of RMR Descriptors", 0}, {ACPI_DMT_UINT32, ACPI_IORT6_OFFSET (RmrOffset), "RMR Descriptor Offset", 0}, ACPI_DMT_TERMINATOR diff --git a/source/compiler/dtfield.c b/source/compiler/dtfield.c index 7e4e6b4d9..f93163195 100644 --- a/source/compiler/dtfield.c +++ b/source/compiler/dtfield.c @@ -676,6 +676,12 @@ DtCompileFlag ( BitLength = 2; break; + case ACPI_DMT_FLAGS8_2: + + BitPosition = 2; + BitLength = 8; + break; + case ACPI_DMT_FLAGS4: BitPosition = 4; diff --git a/source/compiler/dttable1.c b/source/compiler/dttable1.c index 7aba01393..9ac043506 100644 --- a/source/compiler/dttable1.c +++ b/source/compiler/dttable1.c @@ -2054,9 +2054,9 @@ DtCompileIort ( Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); Revision = Table->Revision; - /* Both IORT Rev E and E.a have known issues and are not supported */ + /* IORT Revisions E, E.a & E.c have known issues and are not supported */ - if (Revision == 1 || Revision == 2) + if (Revision == 1 || Revision == 2 || Revision == 4) { DtError (ASL_ERROR, ASL_MSG_UNSUPPORTED, NULL, "IORT table revision"); return (AE_ERROR); diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h index 8ac0f7614..ad5af7074 100644 --- a/source/compiler/dttemplate.h +++ b/source/compiler/dttemplate.h @@ -893,10 +893,10 @@ const unsigned char TemplateHpet[] = const unsigned char TemplateIort[] = { 0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000000 "IORT<..." */ - 0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x05,0xCB,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000020 "..! ...." */ + 0x17,0x12,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000020 "..! ...." */ 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "4......." */ 0x49,0x4F,0x52,0x54,0x00,0x18,0x00,0x01, /* 00000030 "IORT...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ @@ -908,7 +908,7 @@ const unsigned char TemplateIort[] = 0x00,0x5C,0x5F,0x53,0x42,0x2E,0x50,0x43, /* 00000068 ".\_SB.PC" */ 0x49,0x30,0x2E,0x44,0x45,0x56,0x30,0x00, /* 00000070 "I0.DEV0." */ 0x49,0x4F,0x52,0x54,0x3C,0x02,0x00,0x00, /* 00000078 "IORT<..." */ - 0x03,0xF2,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000080 "..INTEL " */ + 0x03,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000080 "..INTEL " */ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000088 "Template" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000090 "....INTL" */ 0x05,0x01,0x21,0x20,0x07,0x00,0x00,0x00, /* 00000098 "..! ...." */ @@ -917,7 +917,7 @@ const unsigned char TemplateIort[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ - 0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x03, /* 000000C8 ".....8.." */ + 0x00,0x00,0x00,0x00,0x02,0x38,0x00,0x04, /* 000000C8 ".....8.." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000D0 "........" */ 0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "$......." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ @@ -955,7 +955,7 @@ const unsigned char TemplateIort[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001F0 "........" */ - 0x06,0x44,0x00,0x01,0x00,0x00,0x00,0x00, /* 000001F8 ".D......" */ + 0x06,0x44,0x00,0x03,0x00,0x00,0x00,0x00, /* 000001F8 ".D......" */ 0x01,0x00,0x00,0x00,0x30,0x00,0x00,0x00, /* 00000200 "....0..." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000208 "........" */ 0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000210 "........" */ @@ -963,7 +963,7 @@ const unsigned char TemplateIort[] = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */ - 0x01,0x00,0x00,0x00 /* 00000238 "...." */ + 0x00,0x00,0x00,0x00 /* 00000238 "...." */ }; const unsigned char TemplateIvrs[] = diff --git a/source/compiler/dtutils.c b/source/compiler/dtutils.c index 8405df814..e950763e7 100644 --- a/source/compiler/dtutils.c +++ b/source/compiler/dtutils.c @@ -411,6 +411,7 @@ DtGetFieldType ( case ACPI_DMT_FLAGS0: case ACPI_DMT_FLAGS1: case ACPI_DMT_FLAGS2: + case ACPI_DMT_FLAGS8_2: case ACPI_DMT_FLAGS4: case ACPI_DMT_FLAGS4_0: case ACPI_DMT_FLAGS4_4: @@ -561,6 +562,7 @@ DtGetFieldLength ( case ACPI_DMT_FLAGS0: case ACPI_DMT_FLAGS1: case ACPI_DMT_FLAGS2: + case ACPI_DMT_FLAGS8_2: case ACPI_DMT_FLAGS4: case ACPI_DMT_FLAGS4_0: case ACPI_DMT_FLAGS4_4: diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h index 37b1511fa..352417cbb 100644 --- a/source/include/acdisasm.h +++ b/source/include/acdisasm.h @@ -206,6 +206,7 @@ typedef enum ACPI_DMT_FLAGS0, ACPI_DMT_FLAGS1, ACPI_DMT_FLAGS2, + ACPI_DMT_FLAGS8_2, ACPI_DMT_FLAGS4, ACPI_DMT_FLAGS4_0, ACPI_DMT_FLAGS4_4, diff --git a/source/include/actbl2.h b/source/include/actbl2.h index 711698d6c..3032c5e25 100644 --- a/source/include/actbl2.h +++ b/source/include/actbl2.h @@ -527,7 +527,7 @@ typedef struct acpi_table_bdat * IORT - IO Remapping Table * * Conforms to "IO Remapping Table System Software on ARM Platforms", - * Document number: ARM DEN 0049E.b, Feb 2021 + * Document number: ARM DEN 0049E.d, Feb 2022 * ******************************************************************************/ @@ -643,7 +643,8 @@ typedef struct acpi_iort_root_complex UINT32 AtsAttribute; UINT32 PciSegmentNumber; UINT8 MemoryAddressLimit; /* Memory address size limit */ - UINT8 Reserved[3]; /* Reserved, must be zero */ + UINT16 PasidCapabilities; /* PASID Capabilities */ + UINT8 Reserved[1]; /* Reserved, must be zero */ } ACPI_IORT_ROOT_COMPLEX; @@ -653,6 +654,8 @@ typedef struct acpi_iort_root_complex #define ACPI_IORT_PRI_SUPPORTED (1<<1) /* The root complex PRI support */ #define ACPI_IORT_PASID_FWD_SUPPORTED (1<<2) /* The root complex PASID forward support */ +/* Masks for PasidCapabilities field above */ +#define ACPI_IORT_PASID_MAX_WIDTH (0x1F) /* Bits 0-4 */ typedef struct acpi_iort_smmu { @@ -739,6 +742,25 @@ typedef struct acpi_iort_rmr { } ACPI_IORT_RMR; +/* Masks for Flags field above */ +#define ACPI_IORT_RMR_REMAP_PERMITTED (1) +#define ACPI_IORT_RMR_ACCESS_PRIVILEGE (1<<1) + +/* + * Macro to access the Access Attributes in flags field above: + * Access Attributes is encoded in bits 9:2 + */ +#define ACPI_IORT_RMR_ACCESS_ATTRIBUTES(flags) (((flags) >> 2) & 0xFF) + +/* Values for above Access Attributes */ + +#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRNE 0x00 +#define ACPI_IORT_RMR_ATTR_DEVICE_NGNRE 0x01 +#define ACPI_IORT_RMR_ATTR_DEVICE_NGRE 0x02 +#define ACPI_IORT_RMR_ATTR_DEVICE_GRE 0x03 +#define ACPI_IORT_RMR_ATTR_NORMAL_NC 0x04 +#define ACPI_IORT_RMR_ATTR_NORMAL_IWB_OWB 0x05 + typedef struct acpi_iort_rmr_desc { UINT64 BaseAddress; UINT64 Length; |