Skip to content

Commit

Permalink
FOR ACPICA: ACPI 6.4 SRAT: add Generic Port Affinity type
Browse files Browse the repository at this point in the history
Add a new subtable type for SRAT Generic Port Affinity.
It uses the same subtable structure as the existing Generic
Initiator Affinity type.

Signed-off-by: Alison Schofield <alison.schofield@intel.com>
  • Loading branch information
AlisonSchofield committed Aug 20, 2021
1 parent f0d41e3 commit 777e11b
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 11 deletions.
1 change: 1 addition & 0 deletions source/common/dmtable.c
Expand Up @@ -473,6 +473,7 @@ static const char *AcpiDmSratSubnames[] =
"GICC Affinity",
"GIC ITS Affinity", /* Acpi 6.2 */
"Generic Initiator Affinity", /* Acpi 6.3 */
"Generic Port Affinity", /* Acpi 6.4 */
"Unknown Subtable Type" /* Reserved */
};

Expand Down
5 changes: 5 additions & 0 deletions source/common/dmtbdump3.c
Expand Up @@ -338,6 +338,11 @@ AcpiDmDumpSrat (
InfoTable = AcpiDmTableInfoSrat5;
break;

case ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY:

InfoTable = AcpiDmTableInfoSrat6;
break;

default:
AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
Subtable->Type);
Expand Down
28 changes: 20 additions & 8 deletions source/common/dmtbinfo3.c
Expand Up @@ -368,21 +368,33 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[] =
ACPI_DMT_TERMINATOR
};

/* Common SRAT structure for Generic Affinity Subtables */

#define ACPI_DM_SRAT_GENERIC_AFFINITY \
{ACPI_DMT_UINT8, ACPI_SRAT5_OFFSET (Reserved), "Reserved1", 0}, \
{ACPI_DMT_UINT8, ACPI_SRAT5_OFFSET (DeviceHandleType), "Device Handle Type", 0}, \
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (ProximityDomain), "Proximity Domain", 0}, \
{ACPI_DMT_BUF16, ACPI_SRAT5_OFFSET (DeviceHandle), "Device Handle", 0}, \
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, \
{ACPI_DMT_FLAG0, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Enabled", 0}, \
{ACPI_DMT_FLAG1, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Architectural Transactions", 0}, \
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Reserved1), "Reserved2", 0}

/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */

ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[] =
{
{ACPI_DMT_UINT8, ACPI_SRAT5_OFFSET (Reserved), "Reserved1", 0},
{ACPI_DMT_UINT8, ACPI_SRAT5_OFFSET (DeviceHandleType), "Device Handle Type", 0},
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (ProximityDomain), "Proximity Domain", 0},
{ACPI_DMT_BUF16, ACPI_SRAT5_OFFSET (DeviceHandle), "Device Handle", 0},
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Enabled", 0},
{ACPI_DMT_FLAG1, ACPI_SRAT5_FLAG_OFFSET (Flags,0), "Architectural Transactions", 0},
{ACPI_DMT_UINT32, ACPI_SRAT5_OFFSET (Reserved1), "Reserved2", 0},
ACPI_DM_SRAT_GENERIC_AFFINITY,
ACPI_DMT_TERMINATOR
};

/* 6: Generic Port Affinity Structure (ACPI 6.4) */

ACPI_DMTABLE_INFO AcpiDmTableInfoSrat6[] =
{
ACPI_DM_SRAT_GENERIC_AFFINITY,
ACPI_DMT_TERMINATOR
};

/*******************************************************************************
*
Expand Down
5 changes: 5 additions & 0 deletions source/compiler/dttable2.c
Expand Up @@ -2062,6 +2062,11 @@ DtCompileSrat (
InfoTable = AcpiDmTableInfoSrat5;
break;

case ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY:

InfoTable = AcpiDmTableInfoSrat6;
break;

default:

DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
Expand Down
1 change: 1 addition & 0 deletions source/include/acdisasm.h
Expand Up @@ -609,6 +609,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat3[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat6[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[];
Expand Down
10 changes: 7 additions & 3 deletions source/include/actbl3.h
Expand Up @@ -352,7 +352,8 @@ enum AcpiSratType
ACPI_SRAT_TYPE_GICC_AFFINITY = 3,
ACPI_SRAT_TYPE_GIC_ITS_AFFINITY = 4, /* ACPI 6.2 */
ACPI_SRAT_TYPE_GENERIC_AFFINITY = 5, /* ACPI 6.3 */
ACPI_SRAT_TYPE_RESERVED = 6 /* 5 and greater are reserved */
ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY = 6, /* ACPI 6.4 */
ACPI_SRAT_TYPE_RESERVED = 7 /* 7 and greater are reserved */
};

/*
Expand Down Expand Up @@ -447,8 +448,11 @@ typedef struct acpi_srat_gic_its_affinity

} ACPI_SRAT_GIC_ITS_AFFINITY;


/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
/*
* Common structure for SRAT subtable types:
* 5: ACPI_SRAT_TYPE_GENERIC_AFFINITY
* 6: ACPI_SRAT_TYPE_GENERIC_PORT_AFFINITY
*/

typedef struct acpi_srat_generic_affinity
{
Expand Down

0 comments on commit 777e11b

Please sign in to comment.