diff --git a/drivers/bus/acpi/acpica/executer/exfield.c b/drivers/bus/acpi/acpica/executer/exfield.c index ceb7fd8d421..8129e222f77 100644 --- a/drivers/bus/acpi/acpica/executer/exfield.c +++ b/drivers/bus/acpi/acpica/executer/exfield.c @@ -187,7 +187,8 @@ AcpiExReadDataFromField ( else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) { /* SMBus, GSBus, IPMI serial */ @@ -359,7 +360,8 @@ AcpiExWriteDataToField ( else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) { /* SMBus, GSBus, IPMI serial */ diff --git a/drivers/bus/acpi/acpica/executer/exserial.c b/drivers/bus/acpi/acpica/executer/exserial.c index 7746e8941df..1ffa0ba5fbf 100644 --- a/drivers/bus/acpi/acpica/executer/exserial.c +++ b/drivers/bus/acpi/acpica/executer/exserial.c @@ -245,6 +245,12 @@ AcpiExReadSerialBus ( Function = ACPI_READ | (AccessorType << 16); break; + case ACPI_ADR_SPACE_PLATFORM_RT: + + BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE; + Function = ACPI_READ; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -364,6 +370,12 @@ AcpiExWriteSerialBus ( Function = ACPI_WRITE | (AccessorType << 16); break; + case ACPI_ADR_SPACE_PLATFORM_RT: + + BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE; + Function = ACPI_WRITE; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } diff --git a/drivers/bus/acpi/acpica/include/acbuffer.h b/drivers/bus/acpi/acpica/include/acbuffer.h index 5d68946cbc9..05486f68c88 100644 --- a/drivers/bus/acpi/acpica/include/acbuffer.h +++ b/drivers/bus/acpi/acpica/include/acbuffer.h @@ -251,5 +251,14 @@ typedef struct acpi_pld_info #define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) #define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */ +/* Panel position defined in _PLD section of ACPI Specification 6.3 */ + +#define ACPI_PLD_PANEL_TOP 0 +#define ACPI_PLD_PANEL_BOTTOM 1 +#define ACPI_PLD_PANEL_LEFT 2 +#define ACPI_PLD_PANEL_RIGHT 3 +#define ACPI_PLD_PANEL_FRONT 4 +#define ACPI_PLD_PANEL_BACK 5 +#define ACPI_PLD_PANEL_UNKNOWN 6 #endif /* ACBUFFER_H */ diff --git a/drivers/bus/acpi/acpica/include/acconfig.h b/drivers/bus/acpi/acpica/include/acconfig.h index 4e3f6b60df0..612c24383d7 100644 --- a/drivers/bus/acpi/acpica/include/acconfig.h +++ b/drivers/bus/acpi/acpica/include/acconfig.h @@ -225,6 +225,7 @@ #define ACPI_MAX_GSBUS_DATA_SIZE 255 #define ACPI_MAX_GSBUS_BUFFER_SIZE ACPI_SERIAL_HEADER_SIZE + ACPI_MAX_GSBUS_DATA_SIZE +#define ACPI_PRM_INPUT_BUFFER_SIZE 26 /* _SxD and _SxW control methods */ diff --git a/drivers/bus/acpi/acpica/include/acdisasm.h b/drivers/bus/acpi/acpica/include/acdisasm.h index ac5e4f70248..836562323b3 100644 --- a/drivers/bus/acpi/acpica/include/acdisasm.h +++ b/drivers/bus/acpi/acpica/include/acdisasm.h @@ -158,6 +158,8 @@ typedef enum ACPI_DMT_HMAT, ACPI_DMT_IORTMEM, ACPI_DMT_IVRS, + ACPI_DMT_IVRS_DE, + ACPI_DMT_IVRS_UNTERMINATED_STRING, ACPI_DMT_LPIT, ACPI_DMT_MADT, ACPI_DMT_NFIT, @@ -166,6 +168,7 @@ typedef enum ACPI_DMT_PMTT, ACPI_DMT_PMTT_VENDOR, ACPI_DMT_PPTT, + ACPI_DMT_RGRT, ACPI_DMT_SDEI, ACPI_DMT_SDEV, ACPI_DMT_SLIC, @@ -257,6 +260,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[]; @@ -357,16 +361,20 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsMemory[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidInteger[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidInteger[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidInteger[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[]; @@ -438,7 +446,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[]; @@ -472,6 +485,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[]; @@ -666,6 +681,14 @@ void AcpiDmDumpPptt ( ACPI_TABLE_HEADER *Table); +void +AcpiDmDumpPrmt ( + ACPI_TABLE_HEADER *Table); + +void +AcpiDmDumpRgrt ( + ACPI_TABLE_HEADER *Table); + UINT32 AcpiDmDumpRsdp ( ACPI_TABLE_HEADER *Table); @@ -698,6 +721,10 @@ void AcpiDmDumpStao ( ACPI_TABLE_HEADER *Table); +void +AcpiDmDumpSvkl ( + ACPI_TABLE_HEADER *Table); + void AcpiDmDumpTcpa ( ACPI_TABLE_HEADER *Table); diff --git a/drivers/bus/acpi/acpica/include/acpixf.h b/drivers/bus/acpi/acpica/include/acpixf.h index 9ecc9eccb80..5fe93ee8522 100644 --- a/drivers/bus/acpi/acpica/include/acpixf.h +++ b/drivers/bus/acpi/acpica/include/acpixf.h @@ -46,7 +46,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20210331 +#define ACPI_CA_VERSION 0x20210604 #include "acconfig.h" #include "actypes.h" diff --git a/drivers/bus/acpi/acpica/include/actbinfo.h b/drivers/bus/acpi/acpica/include/actbinfo.h index 4dc6886f075..d244e1a99d8 100644 --- a/drivers/bus/acpi/acpica/include/actbinfo.h +++ b/drivers/bus/acpi/acpica/include/actbinfo.h @@ -48,6 +48,7 @@ #define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) #define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) #define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f) +#define ACPI_BDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BDAT,f) #define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f) #define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) #define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) @@ -75,6 +76,7 @@ #define ACPI_PDTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PDTT,f) #define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f) #define ACPI_RASF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f) +#define ACPI_RGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f) #define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f) #define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f) #define ACPI_SDEI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f) @@ -84,6 +86,7 @@ #define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f) #define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f) #define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f) +#define ACPI_SVKL_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SVKL,f) #define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f) #define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f) #define ACPI_TPM23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM23,f) @@ -226,6 +229,9 @@ #define ACPI_PPTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE,f) #define ACPI_PPTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE_V1,f) #define ACPI_PPTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_ID,f) +#define ACPI_PRMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f) +#define ACPI_PRMT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f) +#define ACPI_PRMT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f) #define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) #define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) @@ -245,6 +251,7 @@ #define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f) #define ACPI_SRAT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f) #define ACPI_SRAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f) +#define ACPI_SVKL0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f) #define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) #define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f) #define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f) @@ -290,6 +297,8 @@ #define ACPI_IORT6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_RMR,f,o) #define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o) #define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o) +#define ACPI_IVRS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_HEADER,f,o) +#define ACPI_IVRSDE_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_DE_HEADER,f,o) #define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o) #define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o) #define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o) diff --git a/drivers/bus/acpi/acpica/include/actbl1.h b/drivers/bus/acpi/acpica/include/actbl1.h index fb09892eb45..420189eb472 100644 --- a/drivers/bus/acpi/acpica/include/actbl1.h +++ b/drivers/bus/acpi/acpica/include/actbl1.h @@ -415,9 +415,19 @@ typedef struct acpi_cedt_header enum AcpiCedtType { ACPI_CEDT_TYPE_CHBS = 0, - ACPI_CEDT_TYPE_RESERVED = 1 + ACPI_CEDT_TYPE_CFMWS = 1, + ACPI_CEDT_TYPE_RESERVED = 2, }; +/* Values for version field above */ + +#define ACPI_CEDT_CHBS_VERSION_CXL11 (0) +#define ACPI_CEDT_CHBS_VERSION_CXL20 (1) + +/* Values for length field above */ + +#define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000) +#define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000) /* * CEDT subtables @@ -437,6 +447,37 @@ typedef struct acpi_cedt_chbs } ACPI_CEDT_CHBS; +/* 1: CXL Fixed Memory Window Structure */ + +typedef struct acpi_cedt_cfmws +{ + ACPI_CEDT_HEADER Header; + UINT32 Reserved1; + UINT64 BaseHpa; + UINT64 WindowSize; + UINT8 InterleaveWays; + UINT8 InterleaveArithmetic; + UINT16 Reserved2; + UINT32 Granularity; + UINT16 Restrictions; + UINT16 QtgId; + UINT32 InterleaveTargets[]; + +} ACPI_CEDT_CFMWS; + +/* Values for Interleave Arithmetic field above */ + +#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0) + +/* Values for Restrictions field above */ + +#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1) +#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1) +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2) +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3) +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4) + + /******************************************************************************* * * CPEP - Corrected Platform Error Polling table (ACPI 4.0) diff --git a/drivers/bus/acpi/acpica/include/actbl2.h b/drivers/bus/acpi/acpica/include/actbl2.h index 801bd8ca7db..36feac98974 100644 --- a/drivers/bus/acpi/acpica/include/actbl2.h +++ b/drivers/bus/acpi/acpica/include/actbl2.h @@ -60,6 +60,7 @@ * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ +#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */ #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ @@ -75,11 +76,14 @@ #define ACPI_SIG_PHAT "PHAT" /* Platform Health Assessment Table */ #define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ #define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */ +#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */ #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ +#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */ #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ #define ACPI_SIG_NHLT "NHLT" /* Non-HDAudio Link Table */ +#define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */ /* @@ -101,6 +105,23 @@ */ +/******************************************************************************* + * + * BDAT - BIOS Data ACPI Table + * + * Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5 + * Nov 2020 + * + ******************************************************************************/ + +typedef struct acpi_table_bdat +{ + ACPI_TABLE_HEADER Header; + ACPI_GENERIC_ADDRESS Gas; + +} ACPI_TABLE_BDAT; + + /******************************************************************************* * * IORT - IO Remapping Table @@ -541,6 +562,11 @@ typedef struct acpi_ivrs_device_hid } ACPI_IVRS_DEVICE_HID; +/* Values for UidType above */ + +#define ACPI_IVRS_UID_NOT_PRESENT 0 +#define ACPI_IVRS_UID_IS_INTEGER 1 +#define ACPI_IVRS_UID_IS_STRING 2 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ @@ -926,6 +952,22 @@ typedef struct acpi_madt_multiproc_wakeup } ACPI_MADT_MULTIPROC_WAKEUP; +#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE 2032 +#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE 2048 + +typedef struct acpi_madt_multiproc_wakeup_mailbox +{ + UINT16 Command; + UINT16 Reserved; /* reserved - must be zero */ + UINT32 ApicId; + UINT64 WakeupVector; + UINT8 ReservedOs[ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE]; /* reserved for OS use */ + UINT8 ReservedFirmware[ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE]; /* reserved for firmware use */ + +} ACPI_MADT_MULTIPROC_WAKEUP_MAILBOX; + +#define ACPI_MP_WAKE_COMMAND_WAKEUP 1 + /* * Common flags fields for MADT subtables @@ -1992,6 +2034,52 @@ typedef struct acpi_pptt_id } ACPI_PPTT_ID; +/******************************************************************************* + * + * PRMT - Platform Runtime Mechanism Table + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_prmt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + +} ACPI_TABLE_PRMT; + +typedef struct acpi_table_prmt_header +{ + UINT8 PlatformGuid[16]; + UINT32 ModuleInfoOffset; + UINT32 ModuleInfoCount; + +} ACPI_TABLE_PRMT_HEADER; + +typedef struct acpi_prmt_module_info +{ + UINT16 Revision; + UINT16 Length; + UINT8 ModuleGuid[16]; + UINT16 MajorRev; + UINT16 MinorRev; + UINT16 HandlerInfoCount; + UINT32 HandlerInfoOffset; + UINT64 MmioListPointer; + +} ACPI_PRMT_MODULE_INFO; + +typedef struct acpi_prmt_handler_info +{ + UINT16 Revision; + UINT16 Length; + UINT8 HandlerGuid[16]; + UINT64 HandlerAddress; + UINT64 StaticDataBufferAddress; + UINT64 AcpiParamBufferAddress; + +} ACPI_PRMT_HANDLER_INFO; + + /******************************************************************************* * * RASF - RAS Feature Table (ACPI 5.0) @@ -2101,6 +2189,36 @@ enum AcpiRasfStatus #define ACPI_RASF_STATUS (0x1F<<3) +/******************************************************************************* + * + * RGRT - Regulatory Graphics Resource Table + * Version 1 + * + * Conforms to "ACPI RGRT" available at: + * https://microsoft.github.io/mu/dyn/mu_plus/MsCorePkg/AcpiRGRT/feature_acpi_rgrt/ + * + ******************************************************************************/ + +typedef struct acpi_table_rgrt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT16 Version; + UINT8 ImageType; + UINT8 Reserved; + UINT8 Image[0]; + +} ACPI_TABLE_RGRT; + +/* ImageType values */ + +enum AcpiRgrtImageType +{ + ACPI_RGRT_TYPE_RESERVED0 = 0, + ACPI_RGRT_IMAGE_TYPE_PNG = 1, + ACPI_RGRT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ +}; + + /******************************************************************************* * * SBST - Smart Battery Specification Table @@ -2263,6 +2381,44 @@ typedef struct acpi_sdev_pcie_path } ACPI_SDEV_PCIE_PATH; +/******************************************************************************* + * + * SVKL - Storage Volume Key Location Table (ACPI 6.4) + * From: "Guest-Host-Communication Interface (GHCI) for Intel + * Trust Domain Extensions (Intel TDX)". + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_svkl +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 Count; + +} ACPI_TABLE_SVKL; + +typedef struct acpi_svkl_key +{ + UINT16 Type; + UINT16 Format; + UINT32 Size; + UINT64 Address; + +} ACPI_SVKL_KEY; + +enum acpi_svkl_type +{ + ACPI_SVKL_TYPE_MAIN_STORAGE = 0, + ACPI_SVKL_TYPE_RESERVED = 1 /* 1 and greater are reserved */ +}; + +enum acpi_svkl_format +{ + ACPI_SVKL_FORMAT_RAW_BINARY = 0, + ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */ +}; + + /* Reset to default packing */ #pragma pack() diff --git a/drivers/bus/acpi/acpica/include/acutils.h b/drivers/bus/acpi/acpica/include/acutils.h index d3a2414e4e9..2a43f38f154 100644 --- a/drivers/bus/acpi/acpica/include/acutils.h +++ b/drivers/bus/acpi/acpica/include/acutils.h @@ -1160,6 +1160,11 @@ void AcpiUtConvertStringToUuid ( char *InString, UINT8 *UuidBuffer); + +ACPI_STATUS +AcpiUtConvertUuidToString ( + char *UuidBuffer, + char *OutString); #endif #endif /* _ACUTILS_H */ diff --git a/drivers/bus/acpi/acpica/namespace/nsrepair2.c b/drivers/bus/acpi/acpica/namespace/nsrepair2.c index e337ce7c6a9..dee45b9edbb 100644 --- a/drivers/bus/acpi/acpica/namespace/nsrepair2.c +++ b/drivers/bus/acpi/acpica/namespace/nsrepair2.c @@ -457,6 +457,13 @@ AcpiNsRepair_CID ( (*ElementPtr)->Common.ReferenceCount = OriginalRefCount; + + /* + * The OriginalElement holds a reference from the package object + * that represents _HID. Since a new element was created by _HID, + * remove the reference from the _CID package. + */ + AcpiUtRemoveReference (OriginalElement); } ElementPtr++; diff --git a/drivers/bus/acpi/acpica/utilities/utdelete.c b/drivers/bus/acpi/acpica/utilities/utdelete.c index fffb4ed9560..43983691b86 100644 --- a/drivers/bus/acpi/acpica/utilities/utdelete.c +++ b/drivers/bus/acpi/acpica/utilities/utdelete.c @@ -335,6 +335,14 @@ AcpiUtDeleteInternalObj ( } break; + case ACPI_TYPE_LOCAL_ADDRESS_HANDLER: + + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + "***** Address handler %p\n", Object)); + + AcpiOsDeleteMutex (Object->AddressSpace.ContextMutex); + break; + default: break; diff --git a/drivers/bus/acpi/acpica/utilities/utprint.c b/drivers/bus/acpi/acpica/utilities/utprint.c index acd4f868412..0da951a3a63 100644 --- a/drivers/bus/acpi/acpica/utilities/utprint.c +++ b/drivers/bus/acpi/acpica/utilities/utprint.c @@ -622,7 +622,7 @@ vsnprintf ( case 'X': Type |= ACPI_FORMAT_UPPER; - /* FALLTHROUGH */ + ACPI_FALLTHROUGH; case 'x': diff --git a/drivers/bus/acpi/acpica/utilities/utuuid.c b/drivers/bus/acpi/acpica/utilities/utuuid.c index 750e524c5dd..892331ebdbb 100644 --- a/drivers/bus/acpi/acpica/utilities/utuuid.c +++ b/drivers/bus/acpi/acpica/utilities/utuuid.c @@ -100,4 +100,52 @@ AcpiUtConvertStringToUuid ( InString[AcpiGbl_MapToUuidOffset[i] + 1]); } } + + +/******************************************************************************* + * + * FUNCTION: AcpiUtConvertUuidToString + * + * PARAMETERS: UuidBuffer - 16-byte UUID buffer + * OutString - 36-byte formatted UUID string + * + * RETURN: Status + * + * DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string + * OutString must be 37 bytes to include null terminator. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtConvertUuidToString ( + char *UuidBuffer, + char *OutString) +{ + UINT32 i; + + + if (!UuidBuffer || !OutString) + { + return (AE_BAD_PARAMETER); + } + + for (i = 0; i < UUID_BUFFER_LENGTH; i++) + { + OutString[AcpiGbl_MapToUuidOffset[i]] = + AcpiUtHexToAsciiChar (UuidBuffer[i], 4); + + OutString[AcpiGbl_MapToUuidOffset[i] + 1] = + AcpiUtHexToAsciiChar (UuidBuffer[i], 0); + } + + /* Insert required hyphens (dashes) */ + + OutString[UUID_HYPHEN1_OFFSET] = + OutString[UUID_HYPHEN2_OFFSET] = + OutString[UUID_HYPHEN3_OFFSET] = + OutString[UUID_HYPHEN4_OFFSET] = '-'; + + OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */ + return (AE_OK); +} #endif diff --git a/media/doc/3rd Party Files.txt b/media/doc/3rd Party Files.txt index c35896344b3..81d8e7a844b 100644 --- a/media/doc/3rd Party Files.txt +++ b/media/doc/3rd Party Files.txt @@ -69,7 +69,7 @@ URL: https://gitlab.freedesktop.org/mesa/glu, ftp://ftp.freedesktop.org/pub/mesa Title: ACPICA Path: drivers/bus/acpi/acpica -Used Version: 20210331 +Used Version: 20210604 License: GPL-2.0 (https://spdx.org/licenses/GPL-2.0.html) URL: https://acpica.org/