From patchwork Sun Jan 30 16:34:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Ian King X-Patchwork-Id: 1586449 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=PWLlueVl; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Jn2Jp1t8Hz9sG0 for ; Mon, 31 Jan 2022 07:06:32 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nEGSx-0000G9-P0; Sun, 30 Jan 2022 20:06:27 +0000 Received: from mail-wr1-f51.google.com ([209.85.221.51]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nED9l-0003nZ-Bh for fwts-devel@lists.ubuntu.com; Sun, 30 Jan 2022 16:34:25 +0000 Received: by mail-wr1-f51.google.com with SMTP id l25so20802339wrb.13 for ; Sun, 30 Jan 2022 08:34:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=otUzCWoxjKWRjtY7yFEstE5hs4RbNUGfmZo55g9e5OI=; b=PWLlueVljKSiVss6MufPS7H7CYPV9eVqUzF1anOPJmdKHvspccVArO8mEHb0QUr5Bv poIvdtHIjNHbch7DqB2ittJyXvT6tJB6zTJtobiJIsjgZTDwdk5C60n4zXjJHrpPjfhi izS4X7FzlB94B3MUJYK+ezx/0T6/Nd0lcIEwrN5D3eKf7M+aobnkf/hPM3gugvlMhsu+ 2zcaAXoedVlvUpkT9O93vdgLSlSpqoWE6sw7PDzqGMLEgaC/oTmqOqmeP00ijg5WQKUx N5XzgAj7sl675LLvrLF0jGkgEFuK6tpBrWA9NMQdhXbLgwQ2no9LDll3NfbTRzxA2eFJ L5ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=otUzCWoxjKWRjtY7yFEstE5hs4RbNUGfmZo55g9e5OI=; b=ttQcofGpGbsTIvaxZLocYwy+lBYiGj88DLcVppR8cww/iU9S41cLvHsPbnbSmm2KiO vaS6s3YCEqyhD8ZTmf/CuCS207VorduNirhrzSFcRZp4KlpEqS8uJDG5Z/+9W5inihiv RysNnDPXEn2XAvpbFzlq9IyrILmitLCICppXwCItkyZFrZgyduXlkQter2vFylOCWi8C fWH1M3JmVYbIVRTFXLy1pCYEHzDw5+XeWummXf/cyeDAfG6yHKmhMp+A7Y4Ttl+rLjwu 4BUElbGE8ogRizmh7CKxjmKhku5HD3JGO7ytUFlUPkptJZF+yWqidfLjK87noSlL0yTI mueQ== X-Gm-Message-State: AOAM530agx+KDKigk1vMMzchWLgsZfj+cRTSO02cNNSExEGvQouSaJbe /5Zyuqnn+e0lfc1QlGHD3Ik5QmkG/M8= X-Google-Smtp-Source: ABdhPJzWrPmBT4hVFJvVODbVkNXQll+5qhqezgWjpZCMKToAkFonRW3ihFSc+NxoxJjDF2BNzI+1Hg== X-Received: by 2002:a05:6000:4d:: with SMTP id k13mr14585893wrx.615.1643560463089; Sun, 30 Jan 2022 08:34:23 -0800 (PST) Received: from localhost (cpc154979-craw9-2-0-cust193.16-3.cable.virginm.net. [80.193.200.194]) by smtp.gmail.com with ESMTPSA id ay3sm3756402wmb.44.2022.01.30.08.34.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 08:34:22 -0800 (PST) From: Colin Ian King To: fwts-devel@lists.ubuntu.com Subject: [PATCH 1/2] ACPICA: Update to version 20211217 Date: Sun, 30 Jan 2022 16:34:18 +0000 Message-Id: <20220130163419.493806-2-colin.i.king@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220130163419.493806-1-colin.i.king@gmail.com> References: <20220130163419.493806-1-colin.i.king@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.221.51; envelope-from=colin.i.king@gmail.com; helo=mail-wr1-f51.google.com X-Mailman-Approved-At: Sun, 30 Jan 2022 20:06:26 +0000 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Changes in this release of ACPICA are detailed at the following link on the ACPICA developer mailing list: https://lists.acpica.org/hyperkitty/list/devel@acpica.org/thread/XA2YNYE3AZ67XXHUXVRPITIWCVQD5XHV/ Signed-off-by: Colin Ian King Acked-by: Alex Hung Acked-by: Ivan Hu --- src/acpica/source/common/acfileio.c | 11 +- src/acpica/source/common/ahtable.c | 3 + src/acpica/source/common/dmtable.c | 158 ++++++- src/acpica/source/common/dmtbdump.c | 70 +++- src/acpica/source/common/dmtbdump1.c | 2 - src/acpica/source/common/dmtbdump2.c | 247 +++++++---- src/acpica/source/common/dmtbinfo.c | 6 +- src/acpica/source/common/dmtbinfo2.c | 79 +++- src/acpica/source/common/dmtbinfo3.c | 14 + src/acpica/source/compiler/aslcache.c | 5 + src/acpica/source/compiler/aslfiles.c | 4 +- src/acpica/source/compiler/aslmessages.c | 2 + src/acpica/source/compiler/aslmessages.h | 2 + src/acpica/source/compiler/aslstartup.c | 23 +- src/acpica/source/compiler/asluuid.c | 1 - src/acpica/source/compiler/dtcompiler.h | 3 + src/acpica/source/compiler/dttable.c | 59 ++- src/acpica/source/compiler/dttable2.c | 385 +++++++++++++++++- src/acpica/source/compiler/dttemplate.h | 93 +++++ src/acpica/source/compiler/dtutils.c | 11 + .../source/components/dispatcher/dsopcode.c | 1 + .../source/components/events/evhandler.c | 2 +- .../source/components/events/evregion.c | 9 + .../source/components/events/evrgnini.c | 58 +++ .../source/components/executer/exconfig.c | 2 +- .../source/components/executer/excreate.c | 1 + .../source/components/executer/exfield.c | 4 +- .../source/components/executer/exoparg1.c | 2 +- .../source/components/executer/exregion.c | 14 +- .../source/components/hardware/hwesleep.c | 5 +- .../source/components/hardware/hwsleep.c | 7 +- .../source/components/hardware/hwxfsleep.c | 2 - src/acpica/source/components/tables/tbdata.c | 85 ++-- src/acpica/source/components/tables/tbfadt.c | 6 +- .../source/components/tables/tbinstal.c | 12 +- src/acpica/source/components/tables/tbprint.c | 3 +- src/acpica/source/components/tables/tbutils.c | 3 +- .../source/components/tables/tbxfload.c | 57 ++- .../source/components/utilities/utdelete.c | 1 + src/acpica/source/include/acdisasm.h | 16 + src/acpica/source/include/acevents.h | 7 + src/acpica/source/include/acobject.h | 1 + src/acpica/source/include/acpixf.h | 10 +- src/acpica/source/include/actables.h | 5 +- src/acpica/source/include/actbinfo.h | 7 + src/acpica/source/include/actbl2.h | 148 +++++-- src/acpica/source/include/actypes.h | 26 +- 47 files changed, 1442 insertions(+), 230 deletions(-) diff --git a/src/acpica/source/common/acfileio.c b/src/acpica/source/common/acfileio.c index 99f89729..3e26ac3f 100644 --- a/src/acpica/source/common/acfileio.c +++ b/src/acpica/source/common/acfileio.c @@ -552,10 +552,15 @@ AcValidateTableHeader ( /* Read a potential table header */ OriginalOffset = ftell (File); - fseek (File, TableOffset, SEEK_SET); - + if (fseek (File, TableOffset, SEEK_SET)) + { + fprintf (stderr, "SEEK error\n"); + } Actual = fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), File); - fseek (File, OriginalOffset, SEEK_SET); + if (fseek (File, OriginalOffset, SEEK_SET)) + { + fprintf (stderr, "SEEK error\n"); + } if (Actual < sizeof (ACPI_TABLE_HEADER)) { diff --git a/src/acpica/source/common/ahtable.c b/src/acpica/source/common/ahtable.c index d7ce88a9..def42520 100644 --- a/src/acpica/source/common/ahtable.c +++ b/src/acpica/source/common/ahtable.c @@ -200,6 +200,7 @@ AcpiAhGetTableInfo ( const AH_TABLE AcpiGbl_SupportedTables[] = { {ACPI_SIG_AEST, "Arm Error Source Table"}, + {ACPI_SIG_AGDI, "Arm Generic Diagnostic Dump and Reset Device Interface Table"}, {ACPI_SIG_ASF, "Alert Standard Format Table"}, {ACPI_SIG_BDAT, "BIOS Data ACPI Table"}, {ACPI_SIG_BERT, "Boot Error Record Table"}, @@ -233,6 +234,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_MSCT, "Maximum System Characteristics Table"}, {ACPI_SIG_MSDM, "Microsoft Data Management Table"}, {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"}, + {ACPI_SIG_NHLT, "Non HD Audio Link Table"}, {ACPI_SIG_PCCT, "Platform Communications Channel Table"}, {ACPI_SIG_PDTT, "Platform Debug Trigger Table"}, {ACPI_SIG_PHAT, "Platform Health Assessment Table"}, @@ -256,6 +258,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] = {ACPI_SIG_STAO, "Status Override Table"}, {ACPI_SIG_SVKL, "Storage Volume Key Location Table"}, {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"}, + {ACPI_SIG_TDEL, "TD-Event Log Table"}, {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"}, {ACPI_SIG_UEFI, "UEFI Boot Optimization Table"}, {ACPI_SIG_VIOT, "Virtual I/O Translation Table"}, diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c index dff1c613..3137132a 100644 --- a/src/acpica/source/common/dmtable.c +++ b/src/acpica/source/common/dmtable.c @@ -167,10 +167,11 @@ AcpiAhGetTableInfo ( /* Common format strings for commented values */ -#define UINT8_FORMAT "%2.2X [%s]\n" -#define UINT16_FORMAT "%4.4X [%s]\n" -#define UINT32_FORMAT "%8.8X [%s]\n" -#define STRING_FORMAT "[%s]\n" +#define UINT8_FORMAT "%2.2X [%s]\n" +#define UINT8_FORMAT_NO_NEWLINE "%2.2X [%s]" +#define UINT16_FORMAT "%4.4X [%s]\n" +#define UINT32_FORMAT "%8.8X [%s]\n" +#define STRING_FORMAT "[%s]\n" /* These tables map a subtable type to a description string */ @@ -437,6 +438,50 @@ static const char *AcpiDmNhltDirectionNames[] = "Unknown Direction" /* Reserved */ }; +static const char *AcpiDmNhltMicTypeNames[] = +{ + "Omnidirectional", /* ACPI_NHLT_MIC_OMNIDIRECTIONAL */ + "Subcardioid", /* ACPI_NHLT_MIC_SUBCARDIOID */ + "Cardioid", /* ACPI_NHLT_MIC_CARDIOID */ + "SuperCardioid", /* ACPI_NHLT_MIC_SUPER_CARDIOID */ + "HyperCardioid", /* ACPI_NHLT_MIC_HYPER_CARDIOID */ + "8 Shaped", /* ACPI_NHLT_MIC_8_SHAPED */ + "Reserved Mic Type", /* Reserved */ + "Vendor Defined", /* ACPI_NHLT_MIC_VENDOR_DEFINED */ + "Unknown Mic Type" /* ACPI_NHLT_MIC_RESERVED */ +}; + +static const char *AcpiDmNhltMicPositionNames[] = +{ + "Top", /* ACPI_NHLT_MIC_POSITION_TOP */ + "Bottom", /* ACPI_NHLT_MIC_POSITION_BOTTOM */ + "Left", /* ACPI_NHLT_MIC_POSITION_LEFT */ + "Right", /* ACPI_NHLT_MIC_POSITION_RIGHT */ + "Front", /* ACPI_NHLT_MIC_POSITION_FRONT */ + "Back", /* ACPI_NHLT_MIC_POSITION_BACK */ + "Unknown Mic Position" /* 6 and above are reserved */ +}; + +static const char *AcpiDmNhltMicArrayTypeNames[] = +{ + "Unknown Array Type", /* ACPI_NHLT_ARRAY_TYPE_RESERVED */ + "Small Linear 2-element", /* ACPI_NHLT_SMALL_LINEAR_2ELEMENT */ + "Big Linear 2-element", /* ACPI_NHLT_BIG_LINEAR_2ELEMENT */ + "Linear 4-element 1st Geometry", /* ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT */ + "Planar L-shaped 4-element", /* ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT */ + "Linear 4-element 2nd Geometry", /* ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT */ + "Vendor Defined" /* ACPI_NHLT_VENDOR_DEFINED */ +}; + +static const char *AcpiDmNhltConfigTypeNames[] = +{ + "Generic Type", /* ACPI_NHLT_CONFIG_TYPE_GENERIC */ + "Microphone Array", /* ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY */ + "Reserved", /* ACPI_NHLT_CONFIG_TYPE_RESERVED */ + "Render Feedback", /* ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK */ + "Unknown Config Type" /* ACPI_NHLT_CONFIG_TYPE_RESERVED */ +}; + static const char *AcpiDmPcctSubnames[] = { "Generic Communications Subspace", /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */ @@ -604,6 +649,7 @@ static const char *AcpiDmGasAccessWidth[] = const ACPI_DMTABLE_DATA AcpiDmTableData[] = { {ACPI_SIG_AEST, NULL, AcpiDmDumpAest, DtCompileAest, TemplateAest}, + {ACPI_SIG_AGDI, AcpiDmTableInfoAgdi, NULL, NULL, TemplateAgdi}, {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf}, {ACPI_SIG_BDAT, AcpiDmTableInfoBdat, NULL, NULL, TemplateBdat}, {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, @@ -635,7 +681,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct}, {ACPI_SIG_MSDM, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateMsdm}, {ACPI_SIG_NFIT, AcpiDmTableInfoNfit, AcpiDmDumpNfit, DtCompileNfit, TemplateNfit}, - {ACPI_SIG_NHLT, AcpiDmTableInfoNhlt, AcpiDmDumpNhlt, NULL, NULL}, + {ACPI_SIG_NHLT, AcpiDmTableInfoNhlt, AcpiDmDumpNhlt, DtCompileNhlt, TemplateNhlt}, {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct}, {ACPI_SIG_PDTT, AcpiDmTableInfoPdtt, AcpiDmDumpPdtt, DtCompilePdtt, TemplatePdtt}, {ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat}, @@ -657,6 +703,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl}, {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, + {ACPI_SIG_TDEL, AcpiDmTableInfoTdel, NULL, NULL, TemplateTdel}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, {ACPI_SIG_VIOT, AcpiDmTableInfoViot, AcpiDmDumpViot, DtCompileViot, TemplateViot}, @@ -795,7 +842,8 @@ AcpiDmDumpDataTable ( return; } } - else if (ACPI_VALIDATE_RSDP_SIG (Table->Signature)) + else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP, + Table)->Signature)) { Length = AcpiDmDumpRsdp (Table); } @@ -1040,7 +1088,7 @@ AcpiDmDumpTable ( /* Check for beyond subtable end or (worse) beyond EOT */ - if (SubtableLength && (Info->Offset >= SubtableLength)) + if (SubtableLength && (Info->Offset > SubtableLength)) { AcpiOsPrintf ( "/**** ACPI subtable terminates early (Len %u) - " @@ -1074,6 +1122,10 @@ AcpiDmDumpTable ( case ACPI_DMT_MADT: case ACPI_DMT_NHLT1: case ACPI_DMT_NHLT1a: + case ACPI_DMT_NHLT1b: + case ACPI_DMT_NHLT1c: + case ACPI_DMT_NHLT1d: + case ACPI_DMT_NHLT1f: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: @@ -1102,6 +1154,7 @@ AcpiDmDumpTable ( case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: + case ACPI_DMT_NHLT1e: case ACPI_DMT_PHAT: ByteLength = 2; @@ -1848,6 +1901,95 @@ AcpiDmDumpTable ( AcpiDmNhltDirectionNames[Temp8]); break; + case ACPI_DMT_NHLT1b: + + /* NHLT microphone type */ + + Temp8 = *Target; + if (Temp8 > ACPI_NHLT_MIC_RESERVED) + { + Temp8 = ACPI_NHLT_MIC_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmNhltMicTypeNames[Temp8]); + break; + + case ACPI_DMT_NHLT1c: + + /* NHLT microphone position */ + + Temp8 = *Target; + if (Temp8 > ACPI_NHLT_MIC_POSITION_RESERVED) + { + Temp8 = ACPI_NHLT_MIC_POSITION_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmNhltMicPositionNames[Temp8]); + break; + + case ACPI_DMT_NHLT1d: + + /* NHLT microphone array type */ + + Temp8 = *Target & ACPI_NHLT_ARRAY_TYPE_MASK; + if (Temp8 < ACPI_NHLT_ARRAY_TYPE_RESERVED) + { + Temp8 = ACPI_NHLT_ARRAY_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT_NO_NEWLINE, *Target, + AcpiDmNhltMicArrayTypeNames[Temp8 - ACPI_NHLT_ARRAY_TYPE_RESERVED]); + + Temp8 = *Target; + if (Temp8 & ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT) + { + AcpiOsPrintf (" [%s]", "SNR and Sensitivity"); + } + + AcpiOsPrintf ("\n"); + break; + + case ACPI_DMT_NHLT1e: + + /* NHLT Endpoint Device ID */ + + Temp16 = ACPI_GET16 (Target); + if (Temp16 == 0xAE20) + { + Name = "PDM DMIC"; + } + else if (Temp16 == 0xAE30) + { + Name = "BT Sideband"; + } + else if (Temp16 == 0xAE34) + { + Name = "I2S/TDM Codecs"; + } + else + { + Name = "Unknown Device ID"; + } + + AcpiOsPrintf (UINT16_FORMAT, Temp16, Name); + break; + + case ACPI_DMT_NHLT1f: + + /* NHLT ConfigType field */ + + Temp8 = *Target; + if (Temp8 > ACPI_NHLT_CONFIG_TYPE_RESERVED) + { + Temp8 = ACPI_NHLT_CONFIG_TYPE_RESERVED; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmNhltConfigTypeNames[Temp8]); + break; + case ACPI_DMT_PCCT: /* PCCT subtable types */ @@ -1929,7 +2071,7 @@ AcpiDmDumpTable ( break; } - AcpiDmDumpBuffer (Target, 0, ByteLength, 0, NULL); + AcpiDmDumpBuffer (Target, 0, ByteLength, CurrentOffset, NULL); break; case ACPI_DMT_RGRT: diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c index abeb06fa..86c90d67 100644 --- a/src/acpica/source/common/dmtbdump.c +++ b/src/acpica/source/common/dmtbdump.c @@ -195,7 +195,9 @@ AcpiDmDumpBuffer ( char *Header) { UINT8 *Buffer; + UINT8 BufChar; UINT32 i; + UINT32 j; if (!Length) @@ -208,20 +210,72 @@ AcpiDmDumpBuffer ( while (i < Length) { - if (!(i % 16)) + if ((Length > 16) && (i != 0)) { - /* Insert a backslash - line continuation character */ + if ((Length - i) < 16) + AcpiOsPrintf ("\n/* %3.3Xh %4.4u %3u */ ", AbsoluteOffset, AbsoluteOffset, Length - i); + else + AcpiOsPrintf ("\n/* %3.3Xh %4.4u 16 */ ", AbsoluteOffset, AbsoluteOffset); + } + AbsoluteOffset += 16; + + /* Emit the raw data bytes*/ - if (Length > 16) + for (j = 0; j < 16; j++) + { + if (i + j >= Length) { - AcpiOsPrintf ("\\\n "); + /* Dump fill spaces */ + + AcpiOsPrintf ("%*s", (48 - (3 * (Length -i))), " "); + break; } + AcpiOsPrintf ("%.02X ", Buffer[(ACPI_SIZE) i + j]); + } + + /* Emit the ASCII equivalent to the raw data bytes */ + + for (j = 0; j < 16; j++) + { + if (i + j >= Length) + { + AcpiOsPrintf (" */\\\n"); + return; + } + + /* + * Add comment characters so rest of line is ignored when + * compiled + */ + if (j == 0) + { + AcpiOsPrintf ("/* "); + } + + BufChar = Buffer[(ACPI_SIZE) i + j]; + if (isprint (BufChar)) + { + AcpiOsPrintf ("%c", BufChar); + } + else + { + AcpiOsPrintf ("."); + } + } + + /* Done with that line. */ + /* Close the comment and insert a backslash - line continuation character */ + + if (Length > 16) + { + AcpiOsPrintf (" */\\"); + } + else + { + AcpiOsPrintf (" */\\"); } - AcpiOsPrintf ("%.02X ", *Buffer); - i++; - Buffer++; - AbsoluteOffset++; + i += 16; /* Point to next line */ } AcpiOsPrintf ("\n"); diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c index 3a97af46..fd5e2fd9 100644 --- a/src/acpica/source/common/dmtbdump1.c +++ b/src/acpica/source/common/dmtbdump1.c @@ -296,8 +296,6 @@ AcpiDmDumpAest ( case ACPI_AEST_GENERIC_RESOURCE: InfoTable = AcpiDmTableInfoAestGenRsrc; Length = sizeof (ACPI_AEST_PROCESSOR_GENERIC); - AcpiOsPrintf ("Generic Resource Type (%X) is not supported at this time\n", - ProcessorSubtable->ResourceType); break; /* Error case below */ diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c index 118b96ee..04f7139f 100644 --- a/src/acpica/source/common/dmtbdump2.c +++ b/src/acpica/source/common/dmtbdump2.c @@ -1494,19 +1494,21 @@ AcpiDmDumpNhlt ( UINT32 CapabilitiesSize; UINT32 i; UINT32 j; - UINT32 k; UINT32 EndpointEndOffset; UINT8 ConfigType = 0; UINT8 ArrayType; + UINT8 MicrophoneCount; + ACPI_NHLT_VENDOR_MIC_COUNT *MicCount; ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A *DevSpecific; ACPI_NHLT_FORMATS_CONFIG *FormatsConfig; ACPI_NHLT_LINUX_SPECIFIC_COUNT *Count; ACPI_NHLT_LINUX_SPECIFIC_DATA *LinuxData; + ACPI_NHLT_LINUX_SPECIFIC_DATA_B *LinuxDataB; /* Main table */ - AcpiOsPrintf ("/* Main table */\n"); + AcpiOsPrintf (" /* Main table */\n"); Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNhlt); if (ACPI_FAILURE (Status)) @@ -1532,52 +1534,59 @@ AcpiDmDumpNhlt ( /* Do the Endpoint Descriptor table */ Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); + + /* Check for endpoint descriptor length beyond end-of-table */ + if (Subtable->DescriptorLength > TableLength) { Offset += 1; - AcpiOsPrintf ("\n/* Endpoint Descriptor Length larger than" + AcpiOsPrintf ("\n /* Endpoint Descriptor Length larger than" " table size: %X, table %X, adjusting table offset (+1) */\n", Subtable->DescriptorLength, TableLength); Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); } - AcpiOsPrintf ("\n/* Endpoint Descriptor #%u */\n", i+1); + AcpiOsPrintf ("\n /* Endpoint Descriptor #%u */\n", i+1); Status = AcpiDmDumpTable (TableLength, Offset, Subtable, Subtable->DescriptorLength, AcpiDmTableInfoNhlt0); if (ACPI_FAILURE (Status)) { return; } + EndpointEndOffset = Subtable->DescriptorLength + Offset; /* Check for endpoint descriptor beyond end-of-table */ if (Subtable->DescriptorLength > TableLength) { - AcpiOsPrintf ("\n/* Endpoint Descriptor Length larger than table size: %X, table %X */\n", + AcpiOsPrintf ("\n /* Endpoint Descriptor Length larger than table size: %X, table %X */\n", Subtable->DescriptorLength, TableLength); } + Offset += sizeof (ACPI_NHLT_ENDPOINT); Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); /* Do the Device Specific table */ - AcpiOsPrintf ("\n/* Endpoint Device_Specific_Config table */\n"); + AcpiOsPrintf ("\n /* Endpoint Device_Specific_Config table */\n"); DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); CapabilitiesSize = DevSpecific->CapabilitiesSize; + Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, + sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b); + if (ACPI_FAILURE (Status)) + { + return; + } + + ArrayType = 0; /* Different subtables based upon capabilities_size */ switch (CapabilitiesSize) { case 0: - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b); - if (ACPI_FAILURE (Status)) - { - return; - } Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); break; @@ -1602,6 +1611,9 @@ AcpiDmDumpNhlt ( break; case 3: + default: + /* Extract the ConfigType and ArrayType */ + ConfigType = DevSpecific->ConfigType; ArrayType = DevSpecific->ArrayType; @@ -1614,56 +1626,113 @@ AcpiDmDumpNhlt ( /* Capabilities Size == 3 */ Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A); + break; - /* Check for a vendor-defined mic array */ + case 7: + ConfigType = DevSpecific->ConfigType; + Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); + DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); - if ((ConfigType == ACPI_NHLT_TYPE_MIC_ARRAY) && ((ArrayType & ARRAY_TYPE_MASK) == VENDOR_DEFINED)) + AcpiOsPrintf ("\n /* Render Feedback Device-Specific table */\n"); + Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, + sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt5); + if (ACPI_FAILURE (Status)) { - /* Vendor-defined microphone array */ + return; + } - AcpiOsPrintf ("\n/* Vendor-defined microphone array */\n"); + /* Capabilities Size = 7 */ + Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG); + + if (ConfigType == ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK) + { + Subtable = ACPI_ADD_PTR (ACPI_NHLT_ENDPOINT, Table, Offset); + DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable); Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG), AcpiDmTableInfoNhlt6); + sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG), AcpiDmTableInfoNhlt6b); if (ACPI_FAILURE (Status)) { return; } - Offset += sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG); + Offset += sizeof (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG); } break; + } - default: - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B), AcpiDmTableInfoNhlt5b); - if (ACPI_FAILURE (Status)) - { - return; - } + /* Check for a vendor-defined mic array */ - Offset += sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); - Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, - CapabilitiesSize, AcpiDmTableInfoNhlt3a); - if (ACPI_FAILURE (Status)) + if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY) + { + if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED) { - return; + /* Vendor-defined microphone array; get the microphone count first */ + + AcpiOsPrintf ("\n /* Vendor-defined microphone count */\n"); + MicCount = ACPI_ADD_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Table, Offset); + MicrophoneCount = MicCount->MicrophoneCount; + + Status = AcpiDmDumpTable (TableLength, Offset, MicCount, + sizeof (ACPI_NHLT_VENDOR_MIC_COUNT), AcpiDmTableInfoNhlt6a); + Offset += sizeof (ACPI_NHLT_VENDOR_MIC_COUNT); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Get the vendor microphone config structure(s) */ + + for (j = 0; j < MicrophoneCount; j++) + { + AcpiOsPrintf ("\n /* Vendor-defined microphone array #%u*/\n", j+1); + DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset); + + Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, + sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG), AcpiDmTableInfoNhlt6); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += sizeof (ACPI_NHLT_VENDOR_MIC_CONFIG); + } + + /* Check for Microphone SNR and sensitivity extension */ + + if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK) == ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT) + { + AcpiOsPrintf ("\n /* Microphone SNR and sensitivity array */\n"); + DevSpecific = ACPI_ADD_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Table, Offset); + + Status = AcpiDmDumpTable (TableLength, Offset, DevSpecific, + sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION), AcpiDmTableInfoNhlt9); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += sizeof (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION); + } } - Offset += CapabilitiesSize; - break; } - /* Do the Formats_Config table */ + /* Do the Formats_Config table - starts with the FormatsCount field */ FormatsConfig = ACPI_ADD_PTR (ACPI_NHLT_FORMATS_CONFIG, Table, Offset); FormatsCount = FormatsConfig->FormatsCount; - AcpiOsPrintf ("\n/* Formats_Config table */\n"); + AcpiOsPrintf ("\n /* Formats_Config table */\n"); - Status = AcpiDmDumpTable (TableLength, Offset, FormatsConfig, - sizeof (ACPI_NHLT_FORMATS_CONFIG), AcpiDmTableInfoNhlt4); - if (ACPI_FAILURE (Status)) + /* Dump the FormatsCount value */ + + if (FormatsCount > 0) { - return; + Status = AcpiDmDumpTable (TableLength, Offset, FormatsConfig, + sizeof (ACPI_NHLT_FORMATS_CONFIG), AcpiDmTableInfoNhlt4); + if (ACPI_FAILURE (Status)) + { + return; + } } Offset += sizeof (ACPI_NHLT_FORMATS_CONFIG); @@ -1676,36 +1745,43 @@ AcpiDmDumpNhlt ( /* Do the Wave_extensible struct */ - AcpiOsPrintf ("\n/* Wave_Format_Extensible table #%u */\n", j+1); + AcpiOsPrintf ("\n /* Wave_Format_Extensible table #%u */\n", j+1); Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable, sizeof (ACPI_NHLT_FORMAT_CONFIG), AcpiDmTableInfoNhlt3); if (ACPI_FAILURE (Status)) { return; } - Offset += sizeof (ACPI_NHLT_WAVE_EXTENSIBLE); - /* Do the Capabilities array */ + Offset += sizeof (ACPI_NHLT_FORMAT_CONFIG); - Offset += sizeof (UINT32); - AcpiOsPrintf ("\n/* Specific_Config table #%u */\n", j+1); - FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset); - Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable, - CapabilitiesSize, AcpiDmTableInfoNhlt3a); - if (ACPI_FAILURE (Status)) + if (CapabilitiesSize > 0) { - return; + FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset); + /* Do the Capabilities array (of bytes) */ + + AcpiOsPrintf ("\n /* Specific_Config table #%u */\n", j+1); + FormatSubtable = ACPI_ADD_PTR (ACPI_NHLT_FORMAT_CONFIG, Table, Offset); + Status = AcpiDmDumpTable (TableLength, Offset, FormatSubtable, + CapabilitiesSize, AcpiDmTableInfoNhlt3a); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += CapabilitiesSize; // + sizeof (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B); } - Offset += CapabilitiesSize; - } + + } /* for (j = 0; j < FormatsCount; j++) */ /* - * If we are not done with the Endpoint(s) yet, then there must be - * some Linux-specific structure(s) yet to be processed. + * If we are not done with the current Endpoint yet, then there must be + * some Linux-specific structure(s) yet to be processed. First, get + * the count of such structure(s). */ if (Offset < EndpointEndOffset) { - AcpiOsPrintf ("\n"); + AcpiOsPrintf ("\n /* Linux-specific structures (not part of NHLT spec) */\n"); Count = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_COUNT, Table, Offset); Status = AcpiDmDumpTable (TableLength, Offset, Count, sizeof (ACPI_NHLT_LINUX_SPECIFIC_COUNT), AcpiDmTableInfoNhlt7); @@ -1715,14 +1791,32 @@ AcpiDmDumpNhlt ( } Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_COUNT); + if (Count->StructureCount > 1) + { + /* + * We currently cannot disassemble more than one + * Linux-Specific section, because we have no way of + * knowing whether the "Specific Data" part is present. + */ + Count->StructureCount = 1; + fprintf (stderr, "%s %s\n", "Feature not supported:", + "Cannot disassemble more than one Linux-Specific structure"); + return; + } + /* Variable number of linux-specific structures */ - for (k = 0; k < Count->StructureCount; k++) + for (j = 0; j < Count->StructureCount; j++) { LinuxData = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA, Table, Offset); + AcpiOsPrintf ("\n /* Linux-specific structure #%u (not part of NHLT spec) */\n", j+1); - AcpiOsPrintf ("\n/* Linux-specific structure #%u */\n", k+1); - + /* + * Dump the following Linux-specific fields: + * 1) Device ID + * 2) Device Instance ID + * 3) Device Port ID + */ Status = AcpiDmDumpTable (TableLength, Offset, LinuxData, sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA), AcpiDmTableInfoNhlt7a); if (ACPI_FAILURE (Status)) @@ -1731,28 +1825,43 @@ AcpiDmDumpNhlt ( } Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA); - } - /* Should be at the end of the Endpoint structure. Skip any extra bytes */ + /* + * Check that the current offset is not beyond the end of + * this endpoint descriptor. If it is not, we assume that + * the "Specific Data" field is present and valid. Note: + * This does not seem to be documented anywhere. + */ + if (Offset < EndpointEndOffset) + { + /* Dump the linux-specific "Specific Data" field */ - if (Offset < EndpointEndOffset) - { - AcpiOsPrintf ("\n/* Endpoint descriptor ended before endpoint size was reached. " - "skipped %X input bytes, current offset: %X, Endpoint End Offset: %X */\n", - EndpointEndOffset - Offset, Offset, EndpointEndOffset); - AcpiUtDumpBuffer (((UINT8 *)Table)+Offset, - EndpointEndOffset - Offset, DB_BYTE_DISPLAY, Offset); - Offset = EndpointEndOffset; + LinuxDataB = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA_B, Table, Offset); + Status = AcpiDmDumpTable (TableLength, Offset, LinuxDataB, + sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA_B), AcpiDmTableInfoNhlt7b); + if (ACPI_FAILURE (Status)) + { + return; + } + + Offset += sizeof (ACPI_NHLT_LINUX_SPECIFIC_DATA_B); + } } + + /* Should be at the end of the Endpoint structure. */ } - } - /* Emit the table terminator (if present) */ + } /* for (i = 0; i < EndpointCount; i++) */ + + /* + * Done with all of the Endpoint Descriptors, Emit the table terminator + * (if such a legacy structure is present -- not in NHLT specification) + */ if (Offset == TableLength - sizeof (ACPI_NHLT_TABLE_TERMINATOR)) { LinuxData = ACPI_ADD_PTR (ACPI_NHLT_LINUX_SPECIFIC_DATA, Table, Offset); - AcpiOsPrintf ("\n/* Table terminator structure */\n"); + AcpiOsPrintf ("\n /* Table terminator structure (not part of NHLT spec) */\n"); Status = AcpiDmDumpTable (TableLength, Offset, LinuxData, sizeof (ACPI_NHLT_TABLE_TERMINATOR), AcpiDmTableInfoNhlt8); diff --git a/src/acpica/source/common/dmtbinfo.c b/src/acpica/source/common/dmtbinfo.c index 347f9d36..7d812315 100644 --- a/src/acpica/source/common/dmtbinfo.c +++ b/src/acpica/source/common/dmtbinfo.c @@ -292,7 +292,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[] = ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = { {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address", 0}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", DT_NON_ZERO}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model", 0}, {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt", 0}, @@ -408,7 +408,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] = ACPI_DMT_TERMINATOR }; -/* ACPI 5.0 Extensions (FADT version 5) */ +/* Extensions for FADT version 5 */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] = { @@ -417,7 +417,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] = ACPI_DMT_TERMINATOR }; -/* ACPI 6.0 Extensions (FADT version 6) */ +/* Extensions for FADT version 6 */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt6[] = { diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c index 4cbe112e..ab1b2634 100644 --- a/src/acpica/source/common/dmtbinfo2.c +++ b/src/acpica/source/common/dmtbinfo2.c @@ -188,6 +188,25 @@ * Remaining tables are not consumed directly by the ACPICA subsystem */ +/******************************************************************************* + * + * AGDI - Arm Generic Diagnostic Dump and Reset Device Interface + * + * Conforms to "ACPI for Arm Components 1.1, Platform Design Document" + * ARM DEN0093 v1.1 + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoAgdi[] = +{ + {ACPI_DMT_UINT8, ACPI_AGDI_OFFSET (Flags), "Flags (decoded below)", 0}, + {ACPI_DMT_FLAG0, ACPI_AGDI_FLAG_OFFSET (Flags, 0), "Signalling mode", 0}, + {ACPI_DMT_UINT24, ACPI_AGDI_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_AGDI_OFFSET (SdeiEvent), "SdeiEvent", 0}, + {ACPI_DMT_UINT32, ACPI_AGDI_OFFSET (Gsiv), "Gsiv", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * @@ -1217,7 +1236,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt0[] = {ACPI_DMT_NHLT1, ACPI_NHLT0_OFFSET (LinkType), "Link Type", 0}, {ACPI_DMT_UINT8, ACPI_NHLT0_OFFSET (InstanceId), "Instance Id", 0}, {ACPI_DMT_UINT16, ACPI_NHLT0_OFFSET (VendorId), "Vendor Id", 0}, - {ACPI_DMT_UINT16, ACPI_NHLT0_OFFSET (DeviceId), "Device Id", 0}, + {ACPI_DMT_NHLT1e, ACPI_NHLT0_OFFSET (DeviceId), "Device Id", 0}, {ACPI_DMT_UINT16, ACPI_NHLT0_OFFSET (RevisionId), "Revision Id", 0}, {ACPI_DMT_UINT32, ACPI_NHLT0_OFFSET (SubsystemId), "Subsystem Id", 0}, {ACPI_DMT_UINT8, ACPI_NHLT0_OFFSET (DeviceType), "Device Type", 0}, @@ -1230,9 +1249,9 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt0[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt1[] = { - {ACPI_DMT_UINT32, ACPI_NHLT1_OFFSET (CapabilitiesSize), "Capabilities Size", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_NHLT1_OFFSET (CapabilitiesSize), "Capabilities Size", 0}, {ACPI_DMT_UINT8, ACPI_NHLT1_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT1_OFFSET (ConfigType), "Config Type", 0}, + {ACPI_DMT_NHLT1f, ACPI_NHLT1_OFFSET (ConfigType), "Config Type", 0}, ACPI_DMT_TERMINATOR }; @@ -1253,7 +1272,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt2[] = ACPI_DMT_TERMINATOR }; -/* Format Config */ +/* Format Config (wave_format_extensible structure) */ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3[] = { @@ -1267,7 +1286,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3[] = {ACPI_DMT_UINT16, ACPI_NHLT3_OFFSET (Format.ValidBitsPerSample), "Valid Bits Per Sample", 0}, {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (Format.ChannelMask), "Channel Mask", 0}, {ACPI_DMT_UUID, ACPI_NHLT3_OFFSET (Format.SubFormatGuid), "SubFormat GUID", 0}, - {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (CapabilitySize), "Capabilities Length", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_NHLT3_OFFSET (CapabilitySize), "Capabilities Length", 0}, ACPI_DMT_TERMINATOR }; @@ -1281,7 +1300,6 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt3a[] = ACPI_DMT_TERMINATOR }; - /* Formats Config */ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt4[] = @@ -1294,9 +1312,8 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt4[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5[] = { - {ACPI_DMT_UINT32, ACPI_NHLT5_OFFSET (CapabilitiesSize), "Capabilities Size", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_NHLT5_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT5_OFFSET (ConfigType), "Config Type", 0}, + {ACPI_DMT_NHLT1f, ACPI_NHLT5_OFFSET (ConfigType), "Config Type", 0}, ACPI_DMT_TERMINATOR }; @@ -1304,10 +1321,9 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5a[] = { - {ACPI_DMT_UINT32, ACPI_NHLT5A_OFFSET (CapabilitiesSize), "Capabilities Size", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_NHLT5A_OFFSET (VirtualSlot), "Virtual Slot", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT5A_OFFSET (ConfigType), "Config Type", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT5A_OFFSET (ArrayType), "Array Type", 0}, + {ACPI_DMT_NHLT1f, ACPI_NHLT5A_OFFSET (ConfigType), "Config Type", 0}, + {ACPI_DMT_NHLT1d, ACPI_NHLT5A_OFFSET (ArrayType), "Array Type", 0}, ACPI_DMT_TERMINATOR }; @@ -1315,7 +1331,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5a[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[] = { - {ACPI_DMT_UINT32, ACPI_NHLT5B_OFFSET (CapabilitiesSize), "Capabilities Size", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_NHLT5B_OFFSET (CapabilitiesSize), "Capabilities Size", 0}, ACPI_DMT_TERMINATOR }; @@ -1323,17 +1339,32 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5c[] = { - {ACPI_DMT_UINT32, ACPI_NHLT5C_OFFSET (CapabilitiesSize), "Capabilities Size", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_NHLT5C_OFFSET (VirtualSlot), "Virtual Slot", 0}, ACPI_DMT_TERMINATOR }; /* Microphone array Config */ +ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6a[] = +{ + {ACPI_DMT_UINT8, ACPI_NHLT6A_OFFSET (MicrophoneCount), "Microphone Count", 0}, + ACPI_DMT_TERMINATOR +}; + +/* Render Feedback Device Config, CapabilitiesSize == 7 */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6b[] = +{ + {ACPI_DMT_UINT8, ACPI_NHLT6B_OFFSET (FeedbackVirtualSlot), "Feedback Virtual Slot", 0}, + {ACPI_DMT_UINT16, ACPI_NHLT6B_OFFSET (FeedbackChannels), "Feedback Channels", 0}, + {ACPI_DMT_UINT16, ACPI_NHLT6B_OFFSET (FeedbackValidBitsPerSample),"Valid Bits Per Sample", 0}, + ACPI_DMT_TERMINATOR +}; + ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[] = { - {ACPI_DMT_UINT8, ACPI_NHLT6_OFFSET (Type), "Type", 0}, - {ACPI_DMT_UINT8, ACPI_NHLT6_OFFSET (Panel), "Panel", 0}, + {ACPI_DMT_NHLT1b, ACPI_NHLT6_OFFSET (Type), "Type", 0}, + {ACPI_DMT_NHLT1c, ACPI_NHLT6_OFFSET (Panel), "Panel", 0}, {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (SpeakerPositionDistance), "Speaker Position Distance", 0}, {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (HorizontalOffset), "Horizontal Offset", 0}, {ACPI_DMT_UINT16, ACPI_NHLT6_OFFSET (VerticalOffset), "Vertical Offset", 0}, @@ -1352,7 +1383,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[] = ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7[] = { - {ACPI_DMT_UINT8, ACPI_NHLT7_OFFSET (StructureCount), "Linux-specific struct count", 0}, + {ACPI_DMT_UINT8, ACPI_NHLT7_OFFSET (StructureCount), "Linux-specific Count", 0}, ACPI_DMT_TERMINATOR }; @@ -1363,7 +1394,12 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7a[] = {ACPI_DMT_BUF16, ACPI_NHLT7A_OFFSET (DeviceId), "Device ID", 0}, {ACPI_DMT_UINT8, ACPI_NHLT7A_OFFSET (DeviceInstanceId), "Device Instance ID", 0}, {ACPI_DMT_UINT8, ACPI_NHLT7A_OFFSET (DevicePortId), "Device Port ID", 0}, - {ACPI_DMT_BUF18, ACPI_NHLT7A_OFFSET (Filler), "Specific Data", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7b[] = +{ + {ACPI_DMT_BUF18, ACPI_NHLT7B_OFFSET (SpecificData), "Specific Data", 0}, ACPI_DMT_TERMINATOR }; @@ -1376,6 +1412,15 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt8[] = ACPI_DMT_TERMINATOR }; +/* Sensitivity Extension */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt9[] = +{ + {ACPI_DMT_UINT32, ACPI_NHLT9_OFFSET (SNR), "Signal-to-noise ratio", 0}, + {ACPI_DMT_UINT32, ACPI_NHLT9_OFFSET (Sensitivity), "Mic Sensitivity", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c index 12e1be4c..6bdaf676 100644 --- a/src/acpica/source/common/dmtbinfo3.c +++ b/src/acpica/source/common/dmtbinfo3.c @@ -491,6 +491,20 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[] = }; +/******************************************************************************* + * + * TDEL - TD-Event Log Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoTdel[] = +{ + {ACPI_DMT_UINT32, ACPI_TDEL_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_TDEL_OFFSET (LogAreaMinimumLength), "Log Area Minimum Length", 0}, + {ACPI_DMT_UINT64, ACPI_TDEL_OFFSET (LogAreaStartAddress), "Log Area Start Address", 0}, + ACPI_DMT_TERMINATOR +}; + /******************************************************************************* * * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table diff --git a/src/acpica/source/compiler/aslcache.c b/src/acpica/source/compiler/aslcache.c index 51e6f4c4..05ae19b7 100644 --- a/src/acpica/source/compiler/aslcache.c +++ b/src/acpica/source/compiler/aslcache.c @@ -183,6 +183,11 @@ UtLocalCacheCalloc ( UINT32 CacheSize = ASL_STRING_CACHE_SIZE; +#ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED + /* Used for objects other than strings, so keep allocations aligned */ + Length = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); +#endif + if (Length > CacheSize) { CacheSize = Length; diff --git a/src/acpica/source/compiler/aslfiles.c b/src/acpica/source/compiler/aslfiles.c index a93417c6..14403d3d 100644 --- a/src/acpica/source/compiler/aslfiles.c +++ b/src/acpica/source/compiler/aslfiles.c @@ -835,8 +835,8 @@ ErrorExit: * RETURN: Status * * DESCRIPTION: Open the specified input file, and save the directory path to - * the file so that include files can be opened in - * the same directory. + * the file so that include files can be opened in the same + * directory. NOTE: File is opened in text mode. * ******************************************************************************/ diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c index 4dd6422b..ca50d281 100644 --- a/src/acpica/source/compiler/aslmessages.c +++ b/src/acpica/source/compiler/aslmessages.c @@ -410,6 +410,8 @@ const char *AslTableCompilerMsgs [] = /* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list", /* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value", /* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown", +/* ASL_MSG_TWO_ZERO_VALUES */ "32-bit DSDT Address and 64-bit X_DSDT Address cannot both be zero", +/* ASL_MSG_BAD_PARSE_TREE */ "Parse tree appears to be ill-defined" }; /* Preprocessor */ diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h index 69c2561b..0e9fefd4 100644 --- a/src/acpica/source/compiler/aslmessages.h +++ b/src/acpica/source/compiler/aslmessages.h @@ -412,6 +412,8 @@ typedef enum ASL_MSG_ENTRY_LIST, ASL_MSG_UNKNOWN_FORMAT, ASL_MSG_RESERVED_VALUE, + ASL_MSG_TWO_ZERO_VALUES, + ASL_MSG_BAD_PARSE_TREE, /* These messages are used by the Preprocessor only */ diff --git a/src/acpica/source/compiler/aslstartup.c b/src/acpica/source/compiler/aslstartup.c index 97881e14..3954388c 100644 --- a/src/acpica/source/compiler/aslstartup.c +++ b/src/acpica/source/compiler/aslstartup.c @@ -293,9 +293,17 @@ AslDetectSourceFileType ( goto Cleanup; } - /* We have some sort of binary table, check for valid ACPI table */ - - fseek (Info->Handle, 0, SEEK_SET); + /* + * We have some sort of binary table; reopen in binary mode, then + * check for valid ACPI table + */ + fclose (Info->Handle); + Info->Handle = fopen (Info->Filename, "rb"); + if (!Info->Handle) + { + fprintf (stderr, "Could not open input file %s\n", + Info->Filename); + } Status = AcValidateTableHeader (Info->Handle, 0); if (ACPI_SUCCESS (Status)) @@ -446,8 +454,9 @@ AslDoOneFile ( UtConvertBackslashes (AslGbl_Files[ASL_FILE_INPUT].Filename); /* - * Open the input file. Here, this should be an ASCII source file, - * either an ASL file or a Data Table file + * Open the input file. Here, this could be an ASCII source file, + * either an ASL file or a Data Table file, or a binary AML file + * or binary data table file (For disassembly). */ Status = FlOpenInputFile (AslGbl_Files[ASL_FILE_INPUT].Filename); if (ACPI_FAILURE (Status)) @@ -458,8 +467,6 @@ AslDoOneFile ( FileNode = FlGetCurrentFileNode(); - FileNode->OriginalInputFileSize = FlGetFileSize (ASL_FILE_INPUT); - /* Determine input file type */ AslGbl_FileType = AslDetectSourceFileType (&AslGbl_Files[ASL_FILE_INPUT]); @@ -469,6 +476,8 @@ AslDoOneFile ( return (AE_ERROR); } + FileNode->OriginalInputFileSize = FlGetFileSize (ASL_FILE_INPUT); + /* * If -p not specified, we will use the input filename as the * output filename prefix diff --git a/src/acpica/source/compiler/asluuid.c b/src/acpica/source/compiler/asluuid.c index 30540acd..def35c92 100644 --- a/src/acpica/source/compiler/asluuid.c +++ b/src/acpica/source/compiler/asluuid.c @@ -211,4 +211,3 @@ AuValidateUuid ( return (AE_OK); } - diff --git a/src/acpica/source/compiler/dtcompiler.h b/src/acpica/source/compiler/dtcompiler.h index 614a686f..d9c92ce2 100644 --- a/src/acpica/source/compiler/dtcompiler.h +++ b/src/acpica/source/compiler/dtcompiler.h @@ -762,6 +762,7 @@ DtGetGenericTableInfo ( /* ACPI Table templates */ extern const unsigned char TemplateAest[]; +extern const unsigned char TemplateAgdi[]; extern const unsigned char TemplateAsf[]; extern const unsigned char TemplateBoot[]; extern const unsigned char TemplateBdat[]; @@ -793,6 +794,7 @@ extern const unsigned char TemplateMpst[]; extern const unsigned char TemplateMsct[]; extern const unsigned char TemplateMsdm[]; extern const unsigned char TemplateNfit[]; +extern const unsigned char TemplateNhlt[]; extern const unsigned char TemplatePcct[]; extern const unsigned char TemplatePdtt[]; extern const unsigned char TemplatePhat[]; @@ -814,6 +816,7 @@ extern const unsigned char TemplateSrat[]; extern const unsigned char TemplateStao[]; extern const unsigned char TemplateSvkl[]; extern const unsigned char TemplateTcpa[]; +extern const unsigned char TemplateTdel[]; extern const unsigned char TemplateTpm2[]; extern const unsigned char TemplateUefi[]; extern const unsigned char TemplateViot[]; diff --git a/src/acpica/source/compiler/dttable.c b/src/acpica/source/compiler/dttable.c index 702c83ee..fb3f26f1 100644 --- a/src/acpica/source/compiler/dttable.c +++ b/src/acpica/source/compiler/dttable.c @@ -223,10 +223,12 @@ DtCompileRsdp ( * * RETURN: Status * - * DESCRIPTION: Compile FADT. + * DESCRIPTION: Compile FADT (signature FACP). * *****************************************************************************/ +#define ACPI_XDSDT_LOCATION_IN_LIST 11 + ACPI_STATUS DtCompileFadt ( void **List) @@ -235,10 +237,17 @@ DtCompileFadt ( DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; - ACPI_TABLE_HEADER *Table; + DT_FIELD *DsdtFieldList; + ACPI_TABLE_FADT *Table; UINT8 Revision; + UINT32 DsdtAddress; + UINT64 X_DsdtAddress; + UINT32 i; + + /* Get the table revision and 32-bit DSDT Address definition */ + DsdtFieldList = (*PFieldList)->Next; Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt1, &Subtable); if (ACPI_FAILURE (Status)) @@ -249,8 +258,16 @@ DtCompileFadt ( ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); - Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); - Revision = Table->Revision; + Table = ACPI_CAST_PTR (ACPI_TABLE_FADT, ParentTable->Buffer); + Revision = Table->Header.Revision; + DsdtAddress = Table->Dsdt; + + /* FADT version 1 has only 32-bit addresses - error if DSDT address is NULL */ + + if ((Revision == 1) && (!DsdtAddress)) + { + DtError (ASL_ERROR, ASL_MSG_ZERO_VALUE, DsdtFieldList, NULL); + } if (Revision == 2) { @@ -263,8 +280,24 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); } - else if (Revision >= 2) + + else if (Revision > 2) { + /* + * Rev 3 and greater have 64-bit addresses (as well as 32-bit). + * Get the 64-bit DSDT (X_DSDT) Address definition. Note: This + * appears at field list offset 11 within AcpiDmTableInfoFadt3. + */ + DsdtFieldList = *PFieldList; + for (i = 0; i < ACPI_XDSDT_LOCATION_IN_LIST; i++) + { + DsdtFieldList = DsdtFieldList->Next; + if (!DsdtFieldList) + { + return (ASL_MSG_BAD_PARSE_TREE); + } + } + Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt3, &Subtable); if (ACPI_FAILURE (Status)) @@ -274,6 +307,20 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); + Table = ACPI_CAST_PTR (ACPI_TABLE_FADT, ParentTable->Buffer); + X_DsdtAddress = Table->XDsdt; + + /* + * Error if both the 32-bit DSDT address and the + * 64-bit X_DSDT address are zero. + */ + if ((!X_DsdtAddress) && (!DsdtAddress)) + { + DtError (ASL_ERROR, ASL_MSG_TWO_ZERO_VALUES, DsdtFieldList, NULL); + } + + /* Fields specific to FADT Revision 5 (appended to previous) */ + if (Revision >= 5) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5, @@ -286,6 +333,8 @@ DtCompileFadt ( DtInsertSubtable (ParentTable, Subtable); } + /* Fields specific to FADT Revision 6 (appended to previous) */ + if (Revision >= 6) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt6, diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c index b9445122..85406361 100644 --- a/src/acpica/source/compiler/dttable2.c +++ b/src/acpica/source/compiler/dttable2.c @@ -781,6 +781,390 @@ DtCompileNfit ( } +/****************************************************************************** + * + * FUNCTION: DtCompileNhlt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile NHLT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileNhlt ( + void **List) +{ + ACPI_STATUS Status; + UINT32 EndpointCount; + UINT32 MicrophoneCount; + UINT32 FormatsCount; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + UINT32 CapabilitiesSize; + UINT8 ArrayType; + UINT8 ConfigType; + UINT8 LinuxSpecificCount; + UINT32 i; + UINT32 j; + ACPI_TABLE_NHLT_ENDPOINT_COUNT *MainTable; + ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A *DevSpecific; + ACPI_NHLT_VENDOR_MIC_COUNT *MicCount; + ACPI_NHLT_FORMATS_CONFIG *FormatsConfig; + ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D *ConfigSpecific; + ACPI_NHLT_LINUX_SPECIFIC_COUNT *LinuxSpecific; + + + /* Main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + /* Get the Endpoint Descriptor count */ + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + MainTable = ACPI_CAST_PTR (ACPI_TABLE_NHLT_ENDPOINT_COUNT, Subtable->Buffer); + EndpointCount = MainTable->EndpointCount; + + /* Subtables */ + + while (*PFieldList) + { + /* Variable number of Endpoint descriptors */ + + for (i = 0; i < EndpointCount; i++) + { + /* Do the Endpoint Descriptor */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + /* Do the Device Specific table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5b, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + DevSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A, Subtable->Buffer); + CapabilitiesSize = DevSpecific->CapabilitiesSize; + + ArrayType = 0; + ConfigType = 0; + + switch (CapabilitiesSize) + { + case 0: + break; + + case 1: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5c, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + break; + + case 2: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + break; + + case 3: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); + ArrayType = ConfigSpecific->ArrayType; + ConfigType = ConfigSpecific->ConfigType; + break; + + case 7: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6b, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); + ArrayType = ConfigSpecific->ArrayType; + ConfigType = ConfigSpecific->ConfigType; + break; + + default: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt5a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + ConfigSpecific = ACPI_CAST_PTR (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D, Subtable->Buffer); + ArrayType = ConfigSpecific->ArrayType; + ConfigType = ConfigSpecific->ConfigType; + break; + + } /* switch (CapabilitiesSize) */ + + if (CapabilitiesSize >= 3) + { + /* Check for a vendor-defined mic array */ + + if (ConfigType == ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY) + { + if ((ArrayType & ACPI_NHLT_ARRAY_TYPE_MASK) == ACPI_NHLT_VENDOR_DEFINED) + { + /* Get the microphone count */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + MicCount = ACPI_CAST_PTR (ACPI_NHLT_VENDOR_MIC_COUNT, Subtable->Buffer); + MicrophoneCount = MicCount->MicrophoneCount; + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Variable number of microphones */ + + for (j = 0; j < MicrophoneCount; j++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt6, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + + /* Do the MIC_SNR_SENSITIVITY_EXTENSION, if present */ + + if (ArrayType & ACPI_NHLT_ARRAY_TYPE_EXT_MASK) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt9, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + } + } + } + + /* Get the formats count */ + + DtPopSubtable (); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt4, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + FormatsConfig = ACPI_CAST_PTR (ACPI_NHLT_FORMATS_CONFIG, Subtable->Buffer); + FormatsCount = FormatsConfig->FormatsCount; + + /* Variable number of wave_format_extensible structs */ + + for (j = 0; j < FormatsCount; j++) + { + /* Do the main wave_format_extensible structure */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + /* Do the capabilities list */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt3a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + } /* for (j = 0; j < FormatsCount; j++) */ + + /* + * If we are not done with the current Endpoint yet, then there must be + * some Linux-specific structure(s) yet to be processed. First, get + * the count of such structure(s). + */ + if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length"))) + { + /* Get the count of Linux-specific structures */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + LinuxSpecific = ACPI_CAST_PTR (ACPI_NHLT_LINUX_SPECIFIC_COUNT, Subtable->Buffer); + LinuxSpecificCount = LinuxSpecific->StructureCount; + + for (j = 0; j < LinuxSpecificCount; j++) + { + /* + * Compile the following Linux-specific fields: + * 1) Device ID + * 2) Device Instance ID + * 3) Device Port ID + */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7a, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* + * To have a valid Linux-specific "Specific Data" at this + * point, we need: + * 1) The next field must be named "Specific Data" + */ + if (!strcmp ((const char *) (*PFieldList)->Name, "Specific Data")) + { + /* Compile the "Specific Data" field */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt7b, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + + } /* for (j = 0; j < LinuxSpecificCount; j++) */ + } + + DtPopSubtable (); + + } /* for (i = 0; i < EndpointCount; i++) */ + + /* + * All Endpoint Descriptors are completed. + * Do the table terminator structure (not in NHLT spec, optional) + */ + if (*PFieldList && (strcmp ((const char *) (*PFieldList)->Name, "Descriptor Length"))) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoNhlt8, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + + return (AE_OK); + } + + return (AE_OK); +} + + /****************************************************************************** * * FUNCTION: DtCompilePcct @@ -2141,7 +2525,6 @@ DtCompileStao ( } - /****************************************************************************** * * FUNCTION: DtCompileSvkl diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h index 24c8c6f9..e9272f3a 100644 --- a/src/acpica/source/compiler/dttemplate.h +++ b/src/acpica/source/compiler/dttemplate.h @@ -249,6 +249,16 @@ const unsigned char TemplateAest[] = 0x56,0x00,0x00,0x00 /* 000002C8 "V..." */ }; +const unsigned char TemplateAgdi[] = +{ + 0x41,0x47,0x44,0x49,0x30,0x00,0x00,0x00, /* 00000000 "AGDI0..." */ + 0x01,0xE4,0x41,0x4D,0x50,0x45,0x52,0x45, /* 00000008 "..AMPERE" */ + 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x05,0x01,0x21,0x20,0x00,0x00,0x00,0x00, /* 00000020 "..! ...." */ + 0x01,0x00,0x00,0x40,0x00,0x00,0x00,0x00 /* 00000028 "...@...." */ +}; + const unsigned char TemplateAsf[] = { 0x41,0x53,0x46,0x21,0x72,0x00,0x00,0x00, /* 00000000 "ASF!r..." */ @@ -1185,6 +1195,78 @@ const unsigned char TemplateNfit[] = 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000180 "........" */ }; +const unsigned char TemplateNhlt[] = +{ + 0x4E,0x48,0x4C,0x54,0x1E,0x02,0x00,0x00, /* 00000000 "NHLT...." */ + 0x01,0xF7,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" */ + 0x30,0x09,0x21,0x20,0x04,0xAD,0x00,0x00, /* 00000020 "0.! ...." */ + 0x00,0x02,0x06,0x07,0x00,0x30,0xAE,0x09, /* 00000028 ".....0.." */ + 0x00,0x0A,0x00,0x00,0x00,0x02,0x03,0x0D, /* 00000030 "........" */ + 0x38,0x00,0x00,0x00,0xCC,0x01,0x1F,0x02, /* 00000038 "8......." */ + 0x04,0x00,0x13,0x00,0x09,0x00,0x11,0x00, /* 00000040 "........" */ + 0x04,0x20,0x07,0x00,0x09,0x00,0x18,0x00, /* 00000048 ". ......" */ + 0x22,0x00,0x11,0x00,0x15,0x00,0x05,0x03, /* 00000050 ""......." */ + 0x13,0x00,0x09,0x00,0x11,0x00,0x04,0x20, /* 00000058 "....... " */ + 0x07,0x00,0x09,0x00,0x18,0x00,0x22,0x00, /* 00000060 "......"." */ + 0x11,0x00,0x15,0x00,0xAA,0xAA,0x99,0x99, /* 00000068 "........" */ + 0x78,0x56,0x34,0x12,0x02,0xFE,0xFF,0x78, /* 00000070 "xV4....x" */ + 0x56,0x44,0x33,0x00,0x00,0x66,0x55,0x00, /* 00000078 "VD3..fU." */ + 0x00,0x00,0x80,0x16,0x00,0x32,0x00,0x04, /* 00000080 ".....2.." */ + 0x00,0x99,0x99,0x88,0x88,0x6E,0x88,0x9F, /* 00000088 ".....n.." */ + 0xA6,0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B, /* 00000090 "..l.E..{" */ + 0x5D,0xCE,0x24,0xC5,0x53,0x02,0x00,0x00, /* 00000098 "].$.S..." */ + 0x00,0x30,0x40,0xFE,0xFF,0x78,0x56,0x44, /* 000000A0 ".0@..xVD" */ + 0x33,0x00,0x00,0x66,0x55,0x00,0x00,0x00, /* 000000A8 "3..fU..." */ + 0x80,0x16,0x00,0x32,0x00,0x04,0x00,0x99, /* 000000B0 "...2...." */ + 0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6,0xEB, /* 000000B8 "...n...." */ + 0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D,0xCE, /* 000000C0 "l.E..{]." */ + 0x24,0xC5,0x53,0x03,0x00,0x00,0x00,0x50, /* 000000C8 "$.S....P" */ + 0x60,0x70,0x48,0x00,0x00,0x00,0x05,0x06, /* 000000D0 "`pH....." */ + 0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00, /* 000000D8 "..4....." */ + 0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00, /* 000000E0 "........" */ + 0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56, /* 000000E8 "......xV" */ + 0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00, /* 000000F0 "D3..fU.." */ + 0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00, /* 000000F8 "....2..." */ + 0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6, /* 00000100 "....n..." */ + 0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D, /* 00000108 ".l.E..{]" */ + 0xCE,0x24,0xC5,0x53,0x02,0x00,0x00,0x00, /* 00000110 ".$.S...." */ + 0x70,0x80,0x80,0x00,0x00,0x00,0x02,0x06, /* 00000118 "p......." */ + 0x07,0x00,0x30,0xAE,0x09,0x00,0x0A,0x00, /* 00000120 "..0....." */ + 0x00,0x00,0x02,0x03,0x0D,0x07,0x00,0x00, /* 00000128 "........" */ + 0x00,0xCC,0x03,0x09,0x34,0x12,0x28,0x01, /* 00000130 "....4.(." */ + 0x02,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00, /* 00000138 "...xVD3." */ + 0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16, /* 00000140 ".fU....." */ + 0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88, /* 00000148 ".2......" */ + 0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94, /* 00000150 ".n....l." */ + 0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5, /* 00000158 "E..{].$." */ + 0x53,0x04,0x00,0x00,0x00,0x70,0x80,0x90, /* 00000160 "S....p.." */ + 0xA0,0xFE,0xFF,0x78,0x56,0x44,0x33,0x00, /* 00000168 "...xVD3." */ + 0x00,0x66,0x55,0x00,0x00,0x00,0x80,0x16, /* 00000170 ".fU....." */ + 0x00,0x32,0x00,0x04,0x00,0x99,0x99,0x88, /* 00000178 ".2......" */ + 0x88,0x6E,0x88,0x9F,0xA6,0xEB,0x6C,0x94, /* 00000180 ".n....l." */ + 0x45,0xA4,0x1F,0x7B,0x5D,0xCE,0x24,0xC5, /* 00000188 "E..{].$." */ + 0x53,0x05,0x00,0x00,0x00,0x70,0x80,0x90, /* 00000190 "S....p.." */ + 0xA0,0xB0,0x7C,0x00,0x00,0x00,0x05,0x06, /* 00000198 "..|....." */ + 0x07,0x00,0x34,0xAE,0x09,0x00,0x0A,0x00, /* 000001A0 "..4....." */ + 0x00,0x00,0x02,0x00,0x0D,0x02,0x00,0x00, /* 000001A8 "........" */ + 0x00,0xCC,0x00,0x01,0xFE,0xFF,0x78,0x56, /* 000001B0 "......xV" */ + 0x44,0x33,0x00,0x00,0x66,0x55,0x00,0x00, /* 000001B8 "D3..fU.." */ + 0x00,0x80,0x16,0x00,0x32,0x00,0x04,0x00, /* 000001C0 "....2..." */ + 0x99,0x99,0x88,0x88,0x6E,0x88,0x9F,0xA6, /* 000001C8 "....n..." */ + 0xEB,0x6C,0x94,0x45,0xA4,0x1F,0x7B,0x5D, /* 000001D0 ".l.E..{]" */ + 0xCE,0x24,0xC5,0x53,0x11,0x00,0x00,0x00, /* 000001D8 ".$.S...." */ + 0x00,0x01,0x32,0x03,0x04,0x05,0x06,0x37, /* 000001E0 "..2....7" */ + 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x3F, /* 000001E8 ".......?" */ + 0x0A,0x01,0x00,0x01,0x32,0x03,0x04,0x05, /* 000001F0 "....2..." */ + 0x06,0x37,0x08,0x09,0x0A,0x0B,0x0C,0x0D, /* 000001F8 ".7......" */ + 0x0E,0x3F,0x44,0x9A,0x00,0x01,0x32,0x03, /* 00000200 ".?D...2." */ + 0x04,0x05,0x06,0x37,0x08,0x09,0x0A,0x0B, /* 00000208 "...7...." */ + 0x0C,0x0D,0x0E,0x3F,0x0A,0x0B,0x04,0x00, /* 00000210 "...?...." */ + 0x00,0x00,0xEF,0xBE,0xAD,0xDE /* 00000218 "......" */ +}; + const unsigned char TemplatePcct[] = { 0x50,0x43,0x43,0x54,0xAE,0x02,0x00,0x00, /* 00000000 "PCCT...." */ @@ -1756,6 +1838,17 @@ const unsigned char TemplateTcpa[] = 0x01,0x01,0x01,0x01 /* 00000060 "...." */ }; +const unsigned char TemplateTdel[] = +{ + 0x54,0x44,0x45,0x4C,0x38,0x00,0x00,0x00, /* 00000000 "TDEL8..." */ + 0x04,0x1C,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" */ + 0x30,0x09,0x21,0x20,0x00,0x00,0x00,0x00, /* 00000020 "0.! ...." */ + 0xEF,0xCD,0xAB,0x78,0x56,0x34,0x12,0x00, /* 00000028 "...xV4.." */ + 0x78,0x56,0x34,0x12,0xEF,0xCD,0xAB,0x00 /* 00000030 "xV4....." */ +}; + const unsigned char TemplateTpm2[] = { 0x54,0x50,0x4D,0x32,0x4C,0x00,0x00,0x00, /* 00000000 "TPM2L..." */ diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c index 52180fb3..2342ace3 100644 --- a/src/acpica/source/compiler/dtutils.c +++ b/src/acpica/source/compiler/dtutils.c @@ -437,6 +437,7 @@ DtGetFieldType ( case ACPI_DMT_BUF10: case ACPI_DMT_BUF12: case ACPI_DMT_BUF16: + case ACPI_DMT_BUF18: case ACPI_DMT_BUF128: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PMTT_VENDOR: @@ -583,6 +584,10 @@ DtGetFieldLength ( case ACPI_DMT_MADT: case ACPI_DMT_NHLT1: case ACPI_DMT_NHLT1a: + case ACPI_DMT_NHLT1b: + case ACPI_DMT_NHLT1c: + case ACPI_DMT_NHLT1d: + case ACPI_DMT_NHLT1f: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: @@ -611,6 +616,7 @@ DtGetFieldLength ( case ACPI_DMT_HEST: case ACPI_DMT_HMAT: case ACPI_DMT_NFIT: + case ACPI_DMT_NHLT1e: case ACPI_DMT_PCI_PATH: case ACPI_DMT_PHAT: @@ -737,6 +743,11 @@ DtGetFieldLength ( ByteLength = 16; break; + case ACPI_DMT_BUF18: + + ByteLength = 18; + break; + case ACPI_DMT_BUF128: ByteLength = 128; diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c index 153cd89a..579421fa 100644 --- a/src/acpica/source/components/dispatcher/dsopcode.c +++ b/src/acpica/source/components/dispatcher/dsopcode.c @@ -707,6 +707,7 @@ AcpiDsEvalTableRegionOperands ( ObjDesc->Region.Address = ACPI_PTR_TO_PHYSADDR (Table); ObjDesc->Region.Length = Table->Length; + ObjDesc->Region.Pointer = Table; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", ObjDesc, ACPI_FORMAT_UINT64 (ObjDesc->Region.Address), diff --git a/src/acpica/source/components/events/evhandler.c b/src/acpica/source/components/events/evhandler.c index 39171014..763b294e 100644 --- a/src/acpica/source/components/events/evhandler.c +++ b/src/acpica/source/components/events/evhandler.c @@ -563,7 +563,7 @@ AcpiEvInstallSpaceHandler ( case ACPI_ADR_SPACE_DATA_TABLE: Handler = AcpiExDataTableSpaceHandler; - Setup = NULL; + Setup = AcpiEvDataTableRegionSetup; break; default: diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c index 2624cd65..6c73bc80 100644 --- a/src/acpica/source/components/events/evregion.c +++ b/src/acpica/source/components/events/evregion.c @@ -320,6 +320,15 @@ AcpiEvAddressSpaceDispatch ( return_ACPI_STATUS (AE_NOT_EXIST); } + if (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM) + { + ACPI_PCC_INFO *Ctx = HandlerDesc->AddressSpace.Context; + + Ctx->InternalBuffer = FieldObj->Field.InternalPccBuffer; + Ctx->Length = (UINT16) RegionObj->Region.Length; + Ctx->SubspaceId = (UINT8) RegionObj->Region.Address; + } + /* * We must exit the interpreter because the region setup will * potentially execute control methods (for example, the _REG method diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c index 9327d8f7..6959ff98 100644 --- a/src/acpica/source/components/events/evrgnini.c +++ b/src/acpica/source/components/events/evrgnini.c @@ -599,6 +599,64 @@ AcpiEvCmosRegionSetup ( } +/******************************************************************************* + * + * FUNCTION: AcpiEvDataTableRegionSetup + * + * PARAMETERS: Handle - Region we are interested in + * Function - Start or stop + * HandlerContext - Address space handler context + * RegionContext - Region specific context + * + * RETURN: Status + * + * DESCRIPTION: Setup a DataTableRegion + * + * MUTEX: Assumes namespace is not locked + * + ******************************************************************************/ + +ACPI_STATUS +AcpiEvDataTableRegionSetup ( + ACPI_HANDLE Handle, + UINT32 Function, + void *HandlerContext, + void **RegionContext) +{ + ACPI_OPERAND_OBJECT *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle; + ACPI_DATA_TABLE_MAPPING *LocalRegionContext; + + + ACPI_FUNCTION_TRACE (EvDataTableRegionSetup); + + + if (Function == ACPI_REGION_DEACTIVATE) + { + if (*RegionContext) + { + ACPI_FREE (*RegionContext); + *RegionContext = NULL; + } + return_ACPI_STATUS (AE_OK); + } + + /* Create a new context */ + + LocalRegionContext = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_DATA_TABLE_MAPPING)); + if (!(LocalRegionContext)) + { + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Save the data table pointer for use in the handler */ + + LocalRegionContext->Pointer = RegionDesc->Region.Pointer; + + *RegionContext = LocalRegionContext; + return_ACPI_STATUS (AE_OK); +} + + /******************************************************************************* * * FUNCTION: AcpiEvDefaultRegionSetup diff --git a/src/acpica/source/components/executer/exconfig.c b/src/acpica/source/components/executer/exconfig.c index 301e8830..ff26ade7 100644 --- a/src/acpica/source/components/executer/exconfig.c +++ b/src/acpica/source/components/executer/exconfig.c @@ -596,7 +596,7 @@ AcpiExLoadOp ( ACPI_INFO (("Dynamic OEM Table Load:")); AcpiExExitInterpreter (); Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table, TRUE, &TableIndex); AcpiExEnterInterpreter (); if (ACPI_FAILURE (Status)) { diff --git a/src/acpica/source/components/executer/excreate.c b/src/acpica/source/components/executer/excreate.c index 8afae43c..18a3af2f 100644 --- a/src/acpica/source/components/executer/excreate.c +++ b/src/acpica/source/components/executer/excreate.c @@ -451,6 +451,7 @@ AcpiExCreateRegion ( ObjDesc->Region.SpaceId = SpaceId; ObjDesc->Region.Address = 0; ObjDesc->Region.Length = 0; + ObjDesc->Region.Pointer = NULL; ObjDesc->Region.Node = Node; ObjDesc->Region.Handler = NULL; ObjDesc->Common.Flags &= diff --git a/src/acpica/source/components/executer/exfield.c b/src/acpica/source/components/executer/exfield.c index 7871e350..b33ab5b3 100644 --- a/src/acpica/source/components/executer/exfield.c +++ b/src/acpica/source/components/executer/exfield.c @@ -492,9 +492,7 @@ AcpiExWriteDataToField ( ObjDesc->Field.BaseByteOffset, SourceDesc->Buffer.Pointer, DataLength); - if ((ObjDesc->Field.RegionObj->Region.Address == PCC_MASTER_SUBSPACE && - MASTER_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) || - GENERIC_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) + if (MASTER_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) { /* Perform the write */ diff --git a/src/acpica/source/components/executer/exoparg1.c b/src/acpica/source/components/executer/exoparg1.c index bf40b697..424e1e99 100644 --- a/src/acpica/source/components/executer/exoparg1.c +++ b/src/acpica/source/components/executer/exoparg1.c @@ -1193,7 +1193,7 @@ AcpiExOpcode_1A_0T_1R ( WalkState, ReturnDesc, &TempDesc); if (ACPI_FAILURE (Status)) { - goto Cleanup; + return_ACPI_STATUS (Status); } ReturnDesc = TempDesc; diff --git a/src/acpica/source/components/executer/exregion.c b/src/acpica/source/components/executer/exregion.c index 2f49eb0a..cd1fa2eb 100644 --- a/src/acpica/source/components/executer/exregion.c +++ b/src/acpica/source/components/executer/exregion.c @@ -692,9 +692,17 @@ AcpiExDataTableSpaceHandler ( void *HandlerContext, void *RegionContext) { + ACPI_DATA_TABLE_MAPPING *Mapping; + char *Pointer; + + ACPI_FUNCTION_TRACE (ExDataTableSpaceHandler); + Mapping = (ACPI_DATA_TABLE_MAPPING *) RegionContext; + Pointer = ACPI_CAST_PTR (char, Mapping->Pointer) + + (Address - ACPI_PTR_TO_PHYSADDR (Mapping->Pointer)); + /* * Perform the memory read or write. The BitWidth was already * validated. @@ -703,14 +711,12 @@ AcpiExDataTableSpaceHandler ( { case ACPI_READ: - memcpy (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address), - ACPI_DIV_8 (BitWidth)); + memcpy (ACPI_CAST_PTR (char, Value), Pointer, ACPI_DIV_8 (BitWidth)); break; case ACPI_WRITE: - memcpy (ACPI_PHYSADDR_TO_PTR (Address), ACPI_CAST_PTR (char, Value), - ACPI_DIV_8 (BitWidth)); + memcpy (Pointer, ACPI_CAST_PTR (char, Value), ACPI_DIV_8 (BitWidth)); break; default: diff --git a/src/acpica/source/components/hardware/hwesleep.c b/src/acpica/source/components/hardware/hwesleep.c index e8db4d26..19463e5a 100644 --- a/src/acpica/source/components/hardware/hwesleep.c +++ b/src/acpica/source/components/hardware/hwesleep.c @@ -261,7 +261,10 @@ AcpiHwExtendedSleep ( /* Flush caches, as per ACPI specification */ - ACPI_FLUSH_CPU_CACHE (); + if (SleepState < ACPI_STATE_S4) + { + ACPI_FLUSH_CPU_CACHE (); + } Status = AcpiOsEnterSleep (SleepState, SleepControl, 0); if (Status == AE_CTRL_TERMINATE) diff --git a/src/acpica/source/components/hardware/hwsleep.c b/src/acpica/source/components/hardware/hwsleep.c index 2b857d97..4d581da3 100644 --- a/src/acpica/source/components/hardware/hwsleep.c +++ b/src/acpica/source/components/hardware/hwsleep.c @@ -262,7 +262,10 @@ AcpiHwLegacySleep ( /* Flush caches, as per ACPI specification */ - ACPI_FLUSH_CPU_CACHE (); + if (SleepState < ACPI_STATE_S4) + { + ACPI_FLUSH_CPU_CACHE (); + } Status = AcpiOsEnterSleep (SleepState, Pm1aControl, Pm1bControl); if (Status == AE_CTRL_TERMINATE) @@ -376,7 +379,7 @@ AcpiHwLegacyWakePrep ( Pm1aControl |= (AcpiGbl_SleepTypeAS0 << SleepTypeRegInfo->BitPosition); - Pm1aControl |= (AcpiGbl_SleepTypeBS0 << + Pm1bControl |= (AcpiGbl_SleepTypeBS0 << SleepTypeRegInfo->BitPosition); /* Write the control registers and ignore any errors */ diff --git a/src/acpica/source/components/hardware/hwxfsleep.c b/src/acpica/source/components/hardware/hwxfsleep.c index f1a1344c..106dea0d 100644 --- a/src/acpica/source/components/hardware/hwxfsleep.c +++ b/src/acpica/source/components/hardware/hwxfsleep.c @@ -353,8 +353,6 @@ AcpiEnterSleepStateS4bios ( return_ACPI_STATUS (Status); } - ACPI_FLUSH_CPU_CACHE (); - Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); if (ACPI_FAILURE (Status)) diff --git a/src/acpica/source/components/tables/tbdata.c b/src/acpica/source/components/tables/tbdata.c index 522234d9..6f3f7113 100644 --- a/src/acpica/source/components/tables/tbdata.c +++ b/src/acpica/source/components/tables/tbdata.c @@ -243,14 +243,28 @@ AcpiTbInitTableDescriptor ( { /* - * Initialize the table descriptor. Set the pointer to NULL, since the - * table is not fully mapped at this time. + * Initialize the table descriptor. Set the pointer to NULL for external + * tables, since the table is not fully mapped at this time. */ memset (TableDesc, 0, sizeof (ACPI_TABLE_DESC)); TableDesc->Address = Address; TableDesc->Length = Table->Length; TableDesc->Flags = Flags; ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature); + + switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) + { + case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: + case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: + + TableDesc->Pointer = Table; + break; + + case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: + default: + + break; + } } @@ -290,8 +304,7 @@ AcpiTbAcquireTable ( case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: - Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + Table = TableDesc->Pointer; break; default: @@ -359,6 +372,8 @@ AcpiTbReleaseTable ( * PARAMETERS: TableDesc - Table descriptor to be acquired * Address - Address of the table * Flags - Allocation flags of the table + * Table - Pointer to the table (required for virtual + * origins, optional for physical) * * RETURN: Status * @@ -373,9 +388,10 @@ ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags) + UINT8 Flags, + ACPI_TABLE_HEADER *Table) { - ACPI_TABLE_HEADER *TableHeader; + BOOLEAN MappedTable = FALSE; switch (Flags & ACPI_TABLE_ORIGIN_MASK) @@ -384,37 +400,43 @@ AcpiTbAcquireTempTable ( /* Get the length of the full table from the header */ - TableHeader = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); - if (!TableHeader) + if (!Table) { - return (AE_NO_MEMORY); + Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); + if (!Table) + { + return (AE_NO_MEMORY); + } + + MappedTable = TRUE; } - AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); - AcpiOsUnmapMemory (TableHeader, sizeof (ACPI_TABLE_HEADER)); - return (AE_OK); + break; case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: - TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, - ACPI_PHYSADDR_TO_PTR (Address)); - if (!TableHeader) + if (!Table) { - return (AE_NO_MEMORY); + return (AE_BAD_PARAMETER); } - AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); - return (AE_OK); + break; default: - break; + /* Table is not valid yet */ + + return (AE_NO_MEMORY); } - /* Table is not valid yet */ + AcpiTbInitTableDescriptor (TableDesc, Address, Flags, Table); + if (MappedTable) + { + AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); + } - return (AE_NO_MEMORY); + return (AE_OK); } @@ -513,7 +535,20 @@ AcpiTbInvalidateTable ( AcpiTbReleaseTable (TableDesc->Pointer, TableDesc->Length, TableDesc->Flags); - TableDesc->Pointer = NULL; + + switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) + { + case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: + + TableDesc->Pointer = NULL; + break; + + case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: + case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: + default: + + break; + } return_VOID; } @@ -1219,6 +1254,9 @@ AcpiTbLoadTable ( * * PARAMETERS: Address - Physical address of the table * Flags - Allocation flags of the table + * Table - Pointer to the table (required for + * virtual origins, optional for + * physical) * Override - Whether override should be performed * TableIndex - Where table index is returned * @@ -1232,6 +1270,7 @@ ACPI_STATUS AcpiTbInstallAndLoadTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Override, UINT32 *TableIndex) { @@ -1244,7 +1283,7 @@ AcpiTbInstallAndLoadTable ( /* Install the table and load it into the namespace */ - Status = AcpiTbInstallStandardTable (Address, Flags, TRUE, + Status = AcpiTbInstallStandardTable (Address, Flags, Table, TRUE, Override, &i); if (ACPI_FAILURE (Status)) { diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c index 8196e7af..ff00c2f2 100644 --- a/src/acpica/source/components/tables/tbfadt.c +++ b/src/acpica/source/components/tables/tbfadt.c @@ -486,7 +486,7 @@ AcpiTbParseFadt ( AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XDsdt, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_DsdtIndex); /* If Hardware Reduced flag is set, there is no FACS */ @@ -497,14 +497,14 @@ AcpiTbParseFadt ( { AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_FacsIndex); } if (AcpiGbl_FADT.XFacs) { AcpiTbInstallStandardTable ( (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, &AcpiGbl_XFacsIndex); } } diff --git a/src/acpica/source/components/tables/tbinstal.c b/src/acpica/source/components/tables/tbinstal.c index dcbb2a74..f628b460 100644 --- a/src/acpica/source/components/tables/tbinstal.c +++ b/src/acpica/source/components/tables/tbinstal.c @@ -227,6 +227,8 @@ AcpiTbInstallTableWithOverride ( * PARAMETERS: Address - Address of the table (might be a virtual * address depending on the TableFlags) * Flags - Flags for the table + * Table - Pointer to the table (required for virtual + * origins, optional for physical) * Reload - Whether reload should be performed * Override - Whether override should be performed * TableIndex - Where the table index is returned @@ -245,6 +247,7 @@ ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex) @@ -259,7 +262,7 @@ AcpiTbInstallStandardTable ( /* Acquire a temporary table descriptor for validation */ - Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); + Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags, Table); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, @@ -369,7 +372,7 @@ AcpiTbOverrideTable ( if (ACPI_SUCCESS (Status) && Table) { AcpiTbAcquireTempTable (&NewTableDesc, ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table); ACPI_ERROR_ONLY (OverrideType = "Logical"); goto FinishOverride; } @@ -381,7 +384,7 @@ AcpiTbOverrideTable ( if (ACPI_SUCCESS (Status) && Address && Length) { AcpiTbAcquireTempTable (&NewTableDesc, Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL); ACPI_ERROR_ONLY (OverrideType = "Physical"); goto FinishOverride; } @@ -457,7 +460,8 @@ AcpiTbUninstallTable ( if ((TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) == ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL) { - ACPI_FREE (ACPI_PHYSADDR_TO_PTR (TableDesc->Address)); + ACPI_FREE (TableDesc->Pointer); + TableDesc->Pointer = NULL; } TableDesc->Address = ACPI_PTR_TO_PHYSADDR (NULL); diff --git a/src/acpica/source/components/tables/tbprint.c b/src/acpica/source/components/tables/tbprint.c index 392ff95a..5985abdb 100644 --- a/src/acpica/source/components/tables/tbprint.c +++ b/src/acpica/source/components/tables/tbprint.c @@ -261,7 +261,8 @@ AcpiTbPrintTableHeader ( Header->Signature, ACPI_FORMAT_UINT64 (Address), Header->Length)); } - else if (ACPI_VALIDATE_RSDP_SIG (Header->Signature)) + else if (ACPI_VALIDATE_RSDP_SIG (ACPI_CAST_PTR (ACPI_TABLE_RSDP, + Header)->Signature)) { /* RSDP has no common fields */ diff --git a/src/acpica/source/components/tables/tbutils.c b/src/acpica/source/components/tables/tbutils.c index 6316f258..76d8ef3b 100644 --- a/src/acpica/source/components/tables/tbutils.c +++ b/src/acpica/source/components/tables/tbutils.c @@ -500,7 +500,8 @@ AcpiTbParseRootTable ( } Status = AcpiTbInstallStandardTable (Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE, + &TableIndex); if (ACPI_SUCCESS (Status) && ACPI_COMPARE_NAMESEG ( diff --git a/src/acpica/source/components/tables/tbxfload.c b/src/acpica/source/components/tables/tbxfload.c index 046487ba..9e90c91b 100644 --- a/src/acpica/source/components/tables/tbxfload.c +++ b/src/acpica/source/components/tables/tbxfload.c @@ -396,9 +396,7 @@ UnlockAndExit: * * FUNCTION: AcpiInstallTable * - * PARAMETERS: Address - Address of the ACPI table to be installed. - * Physical - Whether the address is a physical table - * address or not + * PARAMETERS: Table - Pointer to the ACPI table to be installed. * * RETURN: Status * @@ -410,28 +408,17 @@ UnlockAndExit: ACPI_STATUS ACPI_INIT_FUNCTION AcpiInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - BOOLEAN Physical) + ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; - UINT8 Flags; UINT32 TableIndex; ACPI_FUNCTION_TRACE (AcpiInstallTable); - if (Physical) - { - Flags = ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL; - } - else - { - Flags = ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL; - } - - Status = AcpiTbInstallStandardTable (Address, Flags, - FALSE, FALSE, &TableIndex); + Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table, FALSE, FALSE, &TableIndex); return_ACPI_STATUS (Status); } @@ -439,6 +426,40 @@ AcpiInstallTable ( ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable) +/******************************************************************************* + * + * FUNCTION: AcpiInstallPhysicalTable + * + * PARAMETERS: Address - Address of the ACPI table to be installed. + * + * RETURN: Status + * + * DESCRIPTION: Dynamically install an ACPI table. + * Note: This function should only be invoked after + * AcpiInitializeTables() and before AcpiLoadTables(). + * + ******************************************************************************/ + +ACPI_STATUS ACPI_INIT_FUNCTION +AcpiInstallPhysicalTable ( + ACPI_PHYSICAL_ADDRESS Address) +{ + ACPI_STATUS Status; + UINT32 TableIndex; + + + ACPI_FUNCTION_TRACE (AcpiInstallPhysicalTable); + + + Status = AcpiTbInstallStandardTable (Address, + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, FALSE, &TableIndex); + + return_ACPI_STATUS (Status); +} + +ACPI_EXPORT_SYMBOL_INIT (AcpiInstallPhysicalTable) + + /******************************************************************************* * * FUNCTION: AcpiLoadTable @@ -481,7 +502,7 @@ AcpiLoadTable ( ACPI_INFO (("Host-directed Dynamic ACPI Table Load:")); Status = AcpiTbInstallAndLoadTable (ACPI_PTR_TO_PHYSADDR (Table), - ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, FALSE, &TableIndex); + ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, Table, FALSE, &TableIndex); if (TableIdx) { *TableIdx = TableIndex; diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c index 624aa687..de114cb6 100644 --- a/src/acpica/source/components/utilities/utdelete.c +++ b/src/acpica/source/components/utilities/utdelete.c @@ -594,6 +594,7 @@ AcpiUtUpdateRefCount ( ACPI_WARNING ((AE_INFO, "Obj %p, Reference Count is already zero, cannot decrement\n", Object)); + return; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_ALLOCATIONS, diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h index 6e162d6a..17d70d4e 100644 --- a/src/acpica/source/include/acdisasm.h +++ b/src/acpica/source/include/acdisasm.h @@ -257,6 +257,7 @@ typedef enum ACPI_DMT_AEST_RES, ACPI_DMT_AEST_XFACE, ACPI_DMT_AEST_XRUPT, + ACPI_DMT_AGDI, ACPI_DMT_ASF, ACPI_DMT_CEDT, ACPI_DMT_DMAR, @@ -280,6 +281,11 @@ typedef enum ACPI_DMT_NFIT, ACPI_DMT_NHLT1, ACPI_DMT_NHLT1a, + ACPI_DMT_NHLT1b, + ACPI_DMT_NHLT1c, + ACPI_DMT_NHLT1d, + ACPI_DMT_NHLT1e, + ACPI_DMT_NHLT1f, ACPI_DMT_PCCT, ACPI_DMT_PHAT, ACPI_DMT_PMTT, @@ -381,6 +387,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAgdi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[]; @@ -559,9 +566,13 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt5c[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6a[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt6b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7a[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt7b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt8[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoNhlt9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhatHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPhat0a[]; @@ -635,6 +646,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoTdel[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm211[]; @@ -882,6 +894,10 @@ void AcpiDmDumpTcpa ( ACPI_TABLE_HEADER *Table); +void +AcpiDmDumpTdel ( + ACPI_TABLE_HEADER *Table); + void AcpiDmDumpTpm2 ( ACPI_TABLE_HEADER *Table); diff --git a/src/acpica/source/include/acevents.h b/src/acpica/source/include/acevents.h index 77475ac9..dda14495 100644 --- a/src/acpica/source/include/acevents.h +++ b/src/acpica/source/include/acevents.h @@ -457,6 +457,13 @@ AcpiEvPciBarRegionSetup ( void *HandlerContext, void **RegionContext); +ACPI_STATUS +AcpiEvDataTableRegionSetup ( + ACPI_HANDLE Handle, + UINT32 Function, + void *HandlerContext, + void **RegionContext); + ACPI_STATUS AcpiEvDefaultRegionSetup ( ACPI_HANDLE Handle, diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h index e7d9f1c9..51a397f2 100644 --- a/src/acpica/source/include/acobject.h +++ b/src/acpica/source/include/acobject.h @@ -313,6 +313,7 @@ typedef struct acpi_object_region union acpi_operand_object *Next; ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; + void *Pointer; /* Only for data table regions */ } ACPI_OBJECT_REGION; diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h index 7f4b31ee..c07d0de2 100644 --- a/src/acpica/source/include/acpixf.h +++ b/src/acpica/source/include/acpixf.h @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20210930 +#define ACPI_CA_VERSION 0x20211217 #include "acconfig.h" #include "actypes.h" @@ -658,8 +658,12 @@ AcpiDecodePldBuffer ( ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS ACPI_INIT_FUNCTION AcpiInstallTable ( - ACPI_PHYSICAL_ADDRESS Address, - BOOLEAN Physical)) + ACPI_TABLE_HEADER *Table)) + +ACPI_EXTERNAL_RETURN_STATUS ( +ACPI_STATUS ACPI_INIT_FUNCTION +AcpiInstallPhysicalTable ( + ACPI_PHYSICAL_ADDRESS Address)) ACPI_EXTERNAL_RETURN_STATUS ( ACPI_STATUS diff --git a/src/acpica/source/include/actables.h b/src/acpica/source/include/actables.h index 038085c8..d0845643 100644 --- a/src/acpica/source/include/actables.h +++ b/src/acpica/source/include/actables.h @@ -193,7 +193,8 @@ ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, - UINT8 Flags); + UINT8 Flags, + ACPI_TABLE_HEADER *Table); void AcpiTbReleaseTempTable ( @@ -279,6 +280,7 @@ ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex); @@ -296,6 +298,7 @@ ACPI_STATUS AcpiTbInstallAndLoadTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, + ACPI_TABLE_HEADER *Table, BOOLEAN Override, UINT32 *TableIndex); diff --git a/src/acpica/source/include/actbinfo.h b/src/acpica/source/include/actbinfo.h index 8a9ff736..7402d97b 100644 --- a/src/acpica/source/include/actbinfo.h +++ b/src/acpica/source/include/actbinfo.h @@ -152,6 +152,7 @@ /* * Macros used to generate offsets to specific table fields */ +#define ACPI_AGDI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_AGDI,f) #define ACPI_FACS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f) #define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) #define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) @@ -197,6 +198,7 @@ #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_TDEL_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TDEL,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) #define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f) @@ -339,9 +341,13 @@ #define ACPI_NHLT5B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B,f) #define ACPI_NHLT5C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C,f) #define ACPI_NHLT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_CONFIG,f) +#define ACPI_NHLT6A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_VENDOR_MIC_COUNT,f) +#define ACPI_NHLT6B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_RENDER_FEEDBACK_DEVICE_SPECIFIC_CONFIG,f) #define ACPI_NHLT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_COUNT,f) #define ACPI_NHLT7A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_DATA,f) +#define ACPI_NHLT7B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_LINUX_SPECIFIC_DATA_B,f) #define ACPI_NHLT8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_TABLE_TERMINATOR,f) +#define ACPI_NHLT9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION,f) #define ACPI_PCCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f) #define ACPI_PCCT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED,f) #define ACPI_PCCT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_HW_REDUCED_TYPE2,f) @@ -408,6 +414,7 @@ #define ACPI_AEST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_PROCESSOR,f,o) #define ACPI_AEST0D_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERFACE,f,o) #define ACPI_AEST0E_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT,f,o) +#define ACPI_AGDI_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_AGDI,f,o) #define ACPI_BGRT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_BGRT,f,o) #define ACPI_DRTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_DRTM,f,o) #define ACPI_DRTM1a_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_DRTM_RESOURCE,f,o) diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h index 0c80aae2..eaa2e243 100644 --- a/src/acpica/source/include/actbl2.h +++ b/src/acpica/source/include/actbl2.h @@ -168,6 +168,7 @@ * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ +#define ACPI_SIG_AGDI "AGDI" /* Arm Generic Diagnostic Dump and Reset Device Interface */ #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 */ @@ -192,6 +193,7 @@ #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ #define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */ +#define ACPI_SIG_TDEL "TDEL" /* TD Event Log Table */ /* @@ -309,7 +311,7 @@ typedef struct acpi_aest_processor_tlb typedef struct acpi_aest_processor_generic { - UINT8 *Resource; + UINT32 Resource; } ACPI_AEST_PROCESSOR_GENERIC; @@ -400,6 +402,28 @@ typedef struct acpi_aest_node_interrupt #define ACPI_AEST_XRUPT_RESERVED 2 /* 2 and above are reserved */ +/******************************************************************************* + * AGDI - Arm Generic Diagnostic Dump and Reset Device Interface + * + * Conforms to "ACPI for Arm Components 1.1, Platform Design Document" + * ARM DEN0093 v1.1 + * + ******************************************************************************/ +typedef struct acpi_table_agdi +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT8 Flags; + UINT8 Reserved[3]; + UINT32 SdeiEvent; + UINT32 Gsiv; + +} ACPI_TABLE_AGDI; + +/* Mask for Flags field above */ + +#define ACPI_AGDI_SIGNALING_MODE (1) + + /******************************************************************************* * * BDAT - BIOS Data ACPI Table @@ -1796,6 +1820,12 @@ typedef struct acpi_table_nhlt } ACPI_TABLE_NHLT; +typedef struct acpi_table_nhlt_endpoint_count +{ + UINT8 EndpointCount; + +} ACPI_TABLE_NHLT_ENDPOINT_COUNT; + typedef struct acpi_nhlt_endpoint { UINT32 DescriptorLength; @@ -1852,6 +1882,8 @@ typedef struct acpi_nhlt_endpoint #define ACPI_NHLT_DIR_RENDER_FEEDBACK 3 #define ACPI_NHLT_DIR_RESERVED 4 /* 4 and above are reserved */ +/* Capabilities = 2 */ + typedef struct acpi_nhlt_device_specific_config { UINT32 CapabilitiesSize; @@ -1860,6 +1892,8 @@ typedef struct acpi_nhlt_device_specific_config } ACPI_NHLT_DEVICE_SPECIFIC_CONFIG; +/* Capabilities = 3 */ + typedef struct acpi_nhlt_device_specific_config_a { UINT32 CapabilitiesSize; @@ -1869,14 +1903,24 @@ typedef struct acpi_nhlt_device_specific_config_a } ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_A; -/* Values for Config Type above */ +/* Capabilities = 3 */ + +typedef struct acpi_nhlt_device_specific_config_d +{ + UINT8 VirtualSlot; + UINT8 ConfigType; + UINT8 ArrayType; -#define ACPI_NHLT_TYPE_MIC_ARRAY 0x01 -#define ACPI_NHLT_TYPE_GENERIC 0x00 +} ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_D; -/* Mask for Extension field of ArrayType */ +/* Values for Config Type above */ + +#define ACPI_NHLT_CONFIG_TYPE_GENERIC 0x00 +#define ACPI_NHLT_CONFIG_TYPE_MIC_ARRAY 0x01 +#define ACPI_NHLT_CONFIG_TYPE_RENDER_FEEDBACK 0x03 +#define ACPI_NHLT_CONFIG_TYPE_RESERVED 0x04 /* 4 and above are reserved */ -#define ACPI_NHLT_ARRAY_TYPE_MASK 0x10 +/* Capabilities = 0 */ typedef struct acpi_nhlt_device_specific_config_b { @@ -1884,6 +1928,8 @@ typedef struct acpi_nhlt_device_specific_config_b } ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_B; +/* Capabilities = 1 */ + typedef struct acpi_nhlt_device_specific_config_c { UINT32 CapabilitiesSize; @@ -1891,6 +1937,13 @@ typedef struct acpi_nhlt_device_specific_config_c } ACPI_NHLT_DEVICE_SPECIFIC_CONFIG_C; +typedef struct acpi_nhlt_render_device_specific_config +{ + UINT32 CapabilitiesSize; + UINT8 VirtualSlot; + +} ACPI_NHLT_RENDER_DEVICE_SPECIFIC_CONFIG; + typedef struct acpi_nhlt_wave_extensible { UINT16 FormatTag; @@ -1963,18 +2016,24 @@ typedef struct acpi_nhlt_mic_device_specific_config /* Values for ArrayTypeExt above */ -#define SMALL_LINEAR_2ELEMENT 0x0A -#define BIG_LINEAR_2ELEMENT 0x0B -#define FIRST_GEOMETRY_LINEAR_4ELEMENT 0x0C -#define PLANAR_LSHAPED_4ELEMENT 0x0D -#define SECOND_GEOMETRY_LINEAR_4ELEMENT 0x0E -#define VENDOR_DEFINED 0x0F -#define ARRAY_TYPE_MASK 0x0F -#define ARRAY_TYPE_EXT_MASK 0x10 +#define ACPI_NHLT_ARRAY_TYPE_RESERVED 0x09 // 9 and below are reserved +#define ACPI_NHLT_SMALL_LINEAR_2ELEMENT 0x0A +#define ACPI_NHLT_BIG_LINEAR_2ELEMENT 0x0B +#define ACPI_NHLT_FIRST_GEOMETRY_LINEAR_4ELEMENT 0x0C +#define ACPI_NHLT_PLANAR_LSHAPED_4ELEMENT 0x0D +#define ACPI_NHLT_SECOND_GEOMETRY_LINEAR_4ELEMENT 0x0E +#define ACPI_NHLT_VENDOR_DEFINED 0x0F +#define ACPI_NHLT_ARRAY_TYPE_MASK 0x0F +#define ACPI_NHLT_ARRAY_TYPE_EXT_MASK 0x10 + +#define ACPI_NHLT_NO_EXTENSION 0x0 +#define ACPI_NHLT_MIC_SNR_SENSITIVITY_EXT (1<<4) -#define NO_EXTENSION 0x0 -#define MIC_SNR_SENSITIVITY_EXT 0x1 +typedef struct acpi_nhlt_vendor_mic_count +{ + UINT8 MicrophoneCount; +} ACPI_NHLT_VENDOR_MIC_COUNT; typedef struct acpi_nhlt_vendor_mic_config { @@ -1996,22 +2055,25 @@ typedef struct acpi_nhlt_vendor_mic_config /* Values for Type field above */ -#define MIC_OMNIDIRECTIONAL 0 -#define MIC_SUBCARDIOID 1 -#define MIC_CARDIOID 2 -#define MIC_SUPER_CARDIOID 3 -#define MIC_HYPER_CARDIOID 4 -#define MIC_8_SHAPED 5 -#define MIC_VENDOR_DEFINED 7 +#define ACPI_NHLT_MIC_OMNIDIRECTIONAL 0 +#define ACPI_NHLT_MIC_SUBCARDIOID 1 +#define ACPI_NHLT_MIC_CARDIOID 2 +#define ACPI_NHLT_MIC_SUPER_CARDIOID 3 +#define ACPI_NHLT_MIC_HYPER_CARDIOID 4 +#define ACPI_NHLT_MIC_8_SHAPED 5 +#define ACPI_NHLT_MIC_RESERVED6 6 // 6 is reserved +#define ACPI_NHLT_MIC_VENDOR_DEFINED 7 +#define ACPI_NHLT_MIC_RESERVED 8 // 8 and above are reserved /* Values for Panel field above */ -#define MIC_TOP 0 -#define MIC_BOTTOM 1 -#define MIC_LEFT 2 -#define MIC_RIGHT 3 -#define MIC_FRONT 4 -#define MIC_REAR 5 +#define ACPI_NHLT_MIC_POSITION_TOP 0 +#define ACPI_NHLT_MIC_POSITION_BOTTOM 1 +#define ACPI_NHLT_MIC_POSITION_LEFT 2 +#define ACPI_NHLT_MIC_POSITION_RIGHT 3 +#define ACPI_NHLT_MIC_POSITION_FRONT 4 +#define ACPI_NHLT_MIC_POSITION_BACK 5 +#define ACPI_NHLT_MIC_POSITION_RESERVED 6 // 6 and above are reserved typedef struct acpi_nhlt_vendor_mic_device_specific_config { @@ -2030,9 +2092,10 @@ typedef struct acpi_nhlt_mic_snr_sensitivity_extension } ACPI_NHLT_MIC_SNR_SENSITIVITY_EXTENSION; +/* Render device with feedback */ + typedef struct acpi_nhlt_render_feedback_device_specific_config { - ACPI_NHLT_DEVICE_SPECIFIC_CONFIG DeviceConfig; UINT8 FeedbackVirtualSlot; // Render slot in case of capture UINT16 FeedbackChannels; // Informative only UINT16 FeedbackValidBitsPerSample; @@ -2052,10 +2115,15 @@ typedef struct acpi_nhlt_linux_specific_data UINT8 DeviceId[16]; UINT8 DeviceInstanceId; UINT8 DevicePortId; - UINT8 Filler[18]; } ACPI_NHLT_LINUX_SPECIFIC_DATA; +typedef struct acpi_nhlt_linux_specific_data_b +{ + UINT8 SpecificData[18]; + +} ACPI_NHLT_LINUX_SPECIFIC_DATA_B; + typedef struct acpi_nhlt_table_terminator { UINT32 TerminatorValue; @@ -3008,6 +3076,24 @@ enum acpi_svkl_format }; +/******************************************************************************* + * + * TDEL - TD-Event Log + * From: "Guest-Host-Communication Interface (GHCI) for Intel + * Trust Domain Extensions (Intel TDX)". + * September 2020 + * + ******************************************************************************/ + +typedef struct acpi_table_tdel +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 Reserved; + UINT64 LogAreaMinimumLength; + UINT64 LogAreaStartAddress; + +} ACPI_TABLE_TDEL; + /* Reset to default packing */ #pragma pack() diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h index 5138342c..6805b48f 100644 --- a/src/acpica/source/include/actypes.h +++ b/src/acpica/source/include/actypes.h @@ -660,7 +660,6 @@ typedef UINT64 ACPI_INTEGER; #define ACPI_TO_POINTER(i) ACPI_CAST_PTR (void, (ACPI_SIZE) (i)) #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) 0) #define ACPI_OFFSET(d, f) ACPI_PTR_DIFF (&(((d *) 0)->f), (void *) 0) -#define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ @@ -687,9 +686,14 @@ typedef UINT64 ACPI_INTEGER; * Can be used with AccessSize field of ACPI_GENERIC_ADDRESS and * ACPI_RESOURCE_GENERIC_REGISTER. */ -#define ACPI_ACCESS_BIT_WIDTH(AccessSize) (1 << ((AccessSize) + 2)) -#define ACPI_ACCESS_BYTE_WIDTH(AccessSize) (1 << ((AccessSize) - 1)) - +#define ACPI_ACCESS_BIT_SHIFT 2 +#define ACPI_ACCESS_BYTE_SHIFT -1 +#define ACPI_ACCESS_BIT_MAX (31 - ACPI_ACCESS_BIT_SHIFT) +#define ACPI_ACCESS_BYTE_MAX (31 - ACPI_ACCESS_BYTE_SHIFT) +#define ACPI_ACCESS_BIT_DEFAULT (8 - ACPI_ACCESS_BIT_SHIFT) +#define ACPI_ACCESS_BYTE_DEFAULT (8 - ACPI_ACCESS_BYTE_SHIFT) +#define ACPI_ACCESS_BIT_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BIT_SHIFT)) +#define ACPI_ACCESS_BYTE_WIDTH(size) (1 << ((size) + ACPI_ACCESS_BYTE_SHIFT)) /******************************************************************************* * @@ -1319,6 +1323,14 @@ typedef struct acpi_connection_info } ACPI_CONNECTION_INFO; +/* Special Context data for PCC Opregion (ACPI 6.3) */ + +typedef struct acpi_pcc_info { + UINT8 SubspaceId; + UINT16 Length; + UINT8 *InternalBuffer; +} ACPI_PCC_INFO; + typedef ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( @@ -1458,6 +1470,12 @@ typedef struct acpi_mem_space_context } ACPI_MEM_SPACE_CONTEXT; +typedef struct acpi_data_table_space_context +{ + void *Pointer; + +} ACPI_DATA_TABLE_MAPPING; + /* * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled From patchwork Sun Jan 30 16:34:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Ian King X-Patchwork-Id: 1586447 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20210112 header.b=ExkY0vir; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=fwts-devel-bounces@lists.ubuntu.com; receiver=) Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4Jn2Jp1rTsz9s5B for ; Mon, 31 Jan 2022 07:06:33 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1nEGSx-0000Fy-Ll; Sun, 30 Jan 2022 20:06:27 +0000 Received: from mail-wm1-f41.google.com ([209.85.128.41]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1nED9l-0003nc-J5 for fwts-devel@lists.ubuntu.com; Sun, 30 Jan 2022 16:34:25 +0000 Received: by mail-wm1-f41.google.com with SMTP id c190-20020a1c9ac7000000b0035081bc722dso7759184wme.5 for ; Sun, 30 Jan 2022 08:34:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=9kUCOoE3R6MmTplwwc2ysIZ/TK+u6dJT9XSYmeLSbSE=; b=ExkY0virarWOVSzQTizqy1wcqu9og9T/xyp82Jc1yQepItGLT8tl0va9ZSiulr9Lh9 rHxzlF6/97sADgdAhiF4jFcepPS8KH+KUwaMVZgBpN4QhMfZWXT/48uC6XoRCeFoHj4/ P4VdwbRuIDbv7gpLlxDRdMv/AXhNi96CqA6SZH3TIbR6rSl5Rmwy2aFstnb7/hr9xJmS GuVGcU4jr8lgT9NaEWIDsPuAkkgE3zy8zG1eh+Fpo4ZW4SK8Dx/5u1xUPygLis3sdYtd nipAYiu6JBL9JZQ2XgRjm6A2S2KRwxZgfpp+8Wp+h1sVLx48cWxUFqSk7vhzccWJ1rOY KT2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=9kUCOoE3R6MmTplwwc2ysIZ/TK+u6dJT9XSYmeLSbSE=; b=Bm2KF1zT1yLIctwW7vzKSQKXGTVQCKVy7W3kEzKheyKBhW7yIbD5p3zhrAffV9ILvc H4JeK77SzhO7UPNsL3FdTRP+zRSPSE0NAaU4kb3HSBT/b7L4lw5/HaXJKB/cgKOxuO4p 5AZje4X8W0OTej4zKRxfxaTAGttQE0hK9M8vp93KN5Wq1l/MSEppDXnJJw7o53w1JGJH e52xv19aY6CYVTRbG2jZw2HI8IFr+H+VUUaj06SJJFeWQSYoPHyo1xvw4e/CKRpt1qvy EGYG6tfKx7mFd8+z4xNxT1//KkIssAwoTuIrXYgQRAr/85DBbE44HRC0eYoaCvqeyskg TryA== X-Gm-Message-State: AOAM532O2hg1PkCdPyWjm5Qwru7jWuTU6hAvxyoNrTfdin53KQAS/pfC jC5XIAAywuYcDcaeR5dAd4eexhifozA= X-Google-Smtp-Source: ABdhPJz2pJPJWcC4auqgrAiAtx5X+72TpcA9wLbolpbthKyc4EyATJr7iUNKyVmd76CuSeRAZ6gEdA== X-Received: by 2002:a7b:cf32:: with SMTP id m18mr23787763wmg.187.1643560464152; Sun, 30 Jan 2022 08:34:24 -0800 (PST) Received: from localhost (cpc154979-craw9-2-0-cust193.16-3.cable.virginm.net. [80.193.200.194]) by smtp.gmail.com with ESMTPSA id o10sm10985344wri.19.2022.01.30.08.34.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Jan 2022 08:34:23 -0800 (PST) From: Colin Ian King To: fwts-devel@lists.ubuntu.com Subject: [PATCH 2/2] fwts-tests: update acpi dump data to be in sync with latest ACPICA Date: Sun, 30 Jan 2022 16:34:19 +0000 Message-Id: <20220130163419.493806-3-colin.i.king@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220130163419.493806-1-colin.i.king@gmail.com> References: <20220130163419.493806-1-colin.i.king@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=209.85.128.41; envelope-from=colin.i.king@gmail.com; helo=mail-wm1-f41.google.com X-Mailman-Approved-At: Sun, 30 Jan 2022 20:06:26 +0000 X-BeenThere: fwts-devel@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Firmware Test Suite Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: fwts-devel-bounces@lists.ubuntu.com Sender: "fwts-devel" Changes to latest ACPICA affect the dumped ACPI table output, update the test results to be in sync with these changes Signed-off-by: Colin Ian King Acked-by: Alex Hung Acked-by: Ivan Hu --- fwts-test/acpidump-0001/acpidump-0001.log | 48 +------------------ .../arg-table-path-0001/acpidump-0001.log | 48 +------------------ 2 files changed, 2 insertions(+), 94 deletions(-) diff --git a/fwts-test/acpidump-0001/acpidump-0001.log b/fwts-test/acpidump-0001/acpidump-0001.log index 83bac47f..c314c60a 100644 --- a/fwts-test/acpidump-0001/acpidump-0001.log +++ b/fwts-test/acpidump-0001/acpidump-0001.log @@ -329,53 +329,7 @@ acpidump [010h 0016 8] Oem Table ID : "TP-68 " acpidump [018h 0024 4] Oem Revision : 06040000 acpidump [01Ch 0028 4] Asl Compiler ID : "TBD " acpidump [020h 0032 4] Asl Compiler Revision : 00000001 -acpidump [024h 0036 338] Software Licensing Structure : \ -acpidump 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F \ -acpidump 54 50 2D 36 38 20 20 20 00 00 04 06 54 42 44 20 \ -acpidump 01 00 00 00 00 00 00 00 9C 00 00 00 06 02 00 00 \ -acpidump 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 \ -acpidump 69 16 4A 9F B1 4B 3A FB 80 20 AA AF C4 F9 3E C1 \ -acpidump 80 49 EE 6A 65 26 72 1E CD BF 5F 2F 96 D6 C0 0A \ -acpidump 92 F5 06 B5 00 B2 3B 29 02 E2 4C 8D C2 F2 BC 41 \ -acpidump 77 9C 70 F0 F3 1B 09 D2 63 5A DC A8 83 F8 5E C9 \ -acpidump 15 95 F9 FA FD DC 05 B7 4D 67 7F 2D B3 84 33 20 \ -acpidump E1 D1 79 2A A7 6A 77 D1 B6 20 2A 76 42 C5 D5 E9 \ -acpidump B6 43 40 55 44 C3 C9 37 99 5F 41 97 70 F3 D1 F6 \ -acpidump 07 EC 7B 1A 29 A1 C1 F1 91 FD 48 86 6E 3E CE CB \ -acpidump 01 00 00 00 B6 00 00 00 00 00 02 00 4C 45 4E 4F \ -acpidump 56 4F 54 50 2D 36 38 20 20 20 57 49 4E 44 4F 57 \ -acpidump 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \ -acpidump 00 00 00 00 00 00 8A 6E 2E C9 36 E6 7F 10 8A EA \ -acpidump 14 AD D2 93 B7 6D 9B 73 AD 83 36 B8 6C A7 A7 EE \ -acpidump 37 47 16 FE F3 FC CD C7 89 84 06 16 91 0B 1E 81 \ -acpidump 11 42 B1 35 52 57 F6 6B BB 5F A5 81 E2 FF 89 8A \ -acpidump 95 C3 4D FC E9 56 4F 4C 34 CC 99 5E 62 E1 90 8A \ -acpidump 54 BE 4A 00 5C 9B A0 86 41 46 66 9D E2 F2 E7 36 \ -acpidump 9C 33 -acpidump 0000: 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F // SLICv.....LENOVO -acpidump 0010: 54 50 2D 36 38 20 20 20 00 00 04 06 54 42 44 20 // TP-68 ....TBD -acpidump 0020: 01 00 00 00 00 00 00 00 9C 00 00 00 06 02 00 00 // ................ -acpidump 0030: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........ -acpidump 0040: 69 16 4A 9F B1 4B 3A FB 80 20 AA AF C4 F9 3E C1 // i.J..K:.. ....>. -acpidump 0050: 80 49 EE 6A 65 26 72 1E CD BF 5F 2F 96 D6 C0 0A // .I.je&r..._/.... -acpidump 0060: 92 F5 06 B5 00 B2 3B 29 02 E2 4C 8D C2 F2 BC 41 // ......;)..L....A -acpidump 0070: 77 9C 70 F0 F3 1B 09 D2 63 5A DC A8 83 F8 5E C9 // w.p.....cZ....^. -acpidump 0080: 15 95 F9 FA FD DC 05 B7 4D 67 7F 2D B3 84 33 20 // ........Mg.-..3 -acpidump 0090: E1 D1 79 2A A7 6A 77 D1 B6 20 2A 76 42 C5 D5 E9 // ..y*.jw.. *vB... -acpidump 00A0: B6 43 40 55 44 C3 C9 37 99 5F 41 97 70 F3 D1 F6 // .C@UD..7._A.p... -acpidump 00B0: 07 EC 7B 1A 29 A1 C1 F1 91 FD 48 86 6E 3E CE CB // ..{.).....H.n>.. -acpidump 00C0: 01 00 00 00 B6 00 00 00 00 00 02 00 4C 45 4E 4F // ............LENO -acpidump 00D0: 56 4F 54 50 2D 36 38 20 20 20 57 49 4E 44 4F 57 // VOTP-68 WINDOW -acpidump 00E0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // S .............. -acpidump 00F0: 00 00 00 00 00 00 8A 6E 2E C9 36 E6 7F 10 8A EA // .......n..6..... -acpidump 0100: 14 AD D2 93 B7 6D 9B 73 AD 83 36 B8 6C A7 A7 EE // .....m.s..6.l... -acpidump 0110: 37 47 16 FE F3 FC CD C7 89 84 06 16 91 0B 1E 81 // 7G.............. -acpidump 0120: 11 42 B1 35 52 57 F6 6B BB 5F A5 81 E2 FF 89 8A // .B.5RW.k._...... -acpidump 0130: 95 C3 4D FC E9 56 4F 4C 34 CC 99 5E 62 E1 90 8A // ..M..VOL4..^b... -acpidump 0140: 54 BE 4A 00 5C 9B A0 86 41 46 66 9D E2 F2 E7 36 // T.J.\...AFf....6 -acpidump 0150: 9C 33 91 27 E7 8D 5C A1 D8 F9 A4 61 8A 1C 04 07 // .3.'..\....a.... -acpidump 0160: E3 2A 1E 14 F1 BD 7F 4C 09 FF 19 11 A9 D4 74 CA // .*.....L......t. -acpidump 0170: 11 9E DC 54 39 BF // ...T9. +acpidump [024h 0036 338] Software Licensing Structure : 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F /* SLICv.....LENOVO */\ acpidump acpidump APIC @ bf6dff70 (104 bytes) (loaded from file) acpidump ---- diff --git a/fwts-test/arg-table-path-0001/acpidump-0001.log b/fwts-test/arg-table-path-0001/acpidump-0001.log index 9ad2f16e..ac216518 100644 --- a/fwts-test/arg-table-path-0001/acpidump-0001.log +++ b/fwts-test/arg-table-path-0001/acpidump-0001.log @@ -42,8 +42,6 @@ acpidump RTC wake not in fixed reg space (V1) : 0 acpidump Use native instr after SLP_TYPx (V3) : 0 acpidump WBINVD instruction is operational (V1) : 1 acpidump Use APIC Physical Destination Mode (V4) : 0 -acpidump 00 00 00 00 00 00 8A 6E 2E C9 36 E6 7F 10 8A EA \ -acpidump 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 \ acpidump 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4C 54 44 20 // APICh.....PTLTD acpidump 0000: 41 50 49 43 68 00 00 00 01 CC 49 4E 54 45 4C 20 // APICh.....INTEL acpidump 0000: 42 4F 4F 54 28 00 00 00 01 A5 50 54 4C 54 44 20 // BOOT(.....PTLTD @@ -52,7 +50,6 @@ acpidump 0000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00 // FA acpidump 0000: 48 50 45 54 38 00 00 00 01 0A 49 4E 54 45 4C 20 // HPET8.....INTEL acpidump 0000: 4D 43 46 47 3C 00 00 00 01 32 49 4E 54 45 4C 20 // MCFG<....2INTEL acpidump 0000: 52 53 44 54 68 00 00 00 01 AF 46 57 54 53 49 44 // RSDTh.....FWTSID -acpidump 0000: 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F // SLICv.....LENOVO acpidump 0000: 54 43 50 41 32 00 00 00 01 8F 49 6E 74 65 6C 20 // TCPA2.....Intel acpidump 0000: 58 53 44 54 AC 00 00 00 01 65 46 57 54 53 49 44 // XSDT.....eFWTSID acpidump 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ @@ -61,10 +58,8 @@ acpidump 0010: 24 53 42 46 54 42 4C 24 00 00 04 06 20 4C 54 50 // $S acpidump 0010: 43 52 45 53 54 4C 4E 45 00 00 04 06 41 4C 41 4E // CRESTLNE....ALAN acpidump 0010: 43 52 45 53 54 4C 4E 45 00 00 04 06 4C 4F 48 52 // CRESTLNE....LOHR acpidump 0010: 43 52 45 53 54 4C 4E 45 01 00 00 00 46 57 54 53 // CRESTLNE....FWTS -acpidump 0010: 54 50 2D 36 38 20 20 20 00 00 04 06 54 42 44 20 // TP-68 ....TBD acpidump 0020: 00 00 00 00 00 00 E0 FE 01 00 00 00 00 08 00 00 // ................ acpidump 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ -acpidump 0020: 01 00 00 00 00 00 00 00 9C 00 00 00 06 02 00 00 // ................ acpidump 0020: 01 00 00 00 00 00 F0 BF 00 00 00 00 78 00 F0 BF // ............x... acpidump 0020: 01 00 00 00 00 00 F0 BF 78 00 F0 BF F0 00 F0 BF // ........x....... acpidump 0020: 01 00 00 00 36 00 00 00 // ....6... @@ -78,7 +73,6 @@ acpidump 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // .. acpidump 0030: 00 00 00 00 00 00 00 FF 00 00 00 00 // ............ acpidump 0030: 00 00 00 00 00 80 00 00 // ........ acpidump 0030: 00 00 00 00 F0 00 F0 BF 00 00 00 00 6A 9B 6D BF // ............j.m. -acpidump 0030: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 // .$..RSA1........ acpidump 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0C 01 00 // ................ acpidump 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0C 02 00 // ................ acpidump 0030: 6A 9B 6D BF 2C 61 F0 BF C0 2F 6E BF 80 62 F0 BF // j.m.,a.../n..b.. @@ -87,70 +81,30 @@ acpidump 0040: 00 00 00 00 2C 61 F0 BF 00 00 00 00 C0 2F 6E BF // .. acpidump 0040: 00 00 C0 FE 00 00 00 00 02 0A 00 00 02 00 00 00 // ................ acpidump 0040: 00 00 C0 FE 00 00 00 00 04 06 00 05 00 01 04 06 // ................ acpidump 0040: 04 10 00 00 00 00 00 00 20 10 00 00 08 10 00 00 // ........ ....... -acpidump 0040: 69 16 4A 9F B1 4B 3A FB 80 20 AA AF C4 F9 3E C1 // i.J..K:.. ....>. acpidump 0040: C8 62 F0 BF 14 63 F0 BF 48 63 F0 BF CE 64 F0 BF // .b...c..Hc...d.. acpidump 0050: 00 00 00 00 80 62 F0 BF 00 00 00 00 C8 62 F0 BF // .....b.......b.. acpidump 0050: 00 00 02 0A 00 09 09 00 00 00 0D 00 04 06 00 05 // ................ acpidump 0050: 01 05 00 01 02 0A 00 00 02 00 00 00 05 00 02 0A // ................ acpidump 0050: 28 10 00 00 00 00 00 00 04 02 01 04 08 00 00 85 // (............... -acpidump 0050: 80 49 EE 6A 65 26 72 1E CD BF 5F 2F 96 D6 C0 0A // .I.je&r..._/.... acpidump 0050: 8B 67 F0 BF 3E 68 F0 BF AD 6A F0 BF 63 6B F0 BF // .g..>h...j..ck.. acpidump 0060: 00 00 00 00 14 63 F0 BF 00 00 00 00 48 63 F0 BF // .....c......Hc.. acpidump 0060: 00 01 04 06 01 05 00 01 // ........ acpidump 0060: 00 09 09 00 00 00 0D 00 // ........ acpidump 0060: 01 00 23 00 00 00 00 00 01 03 0D 00 32 00 00 00 // ..#.........2... acpidump 0060: 59 70 F0 BF 9B 70 F0 BF // Yp...p.. -acpidump 0060: 92 F5 06 B5 00 B2 3B 29 02 E2 4C 8D C2 F2 BC 41 // ......;)..L....A acpidump 0070: 00 00 00 00 CE 64 F0 BF 00 00 00 00 8B 67 F0 BF // .....d.......g.. -acpidump 0070: 77 9C 70 F0 F3 1B 09 D2 63 5A DC A8 83 F8 5E C9 // w.p.....cZ....^. acpidump 0070: A5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ acpidump 0080: 00 00 00 00 3E 68 F0 BF 00 00 00 00 AD 6A F0 BF // ....>h.......j.. acpidump 0080: 00 00 00 00 C0 2F 6E BF 00 00 00 00 6A 9B 6D BF // ...../n.....j.m. -acpidump 0080: 15 95 F9 FA FD DC 05 B7 4D 67 7F 2D B3 84 33 20 // ........Mg.-..3 acpidump 0090: 00 00 00 00 01 20 00 00 00 10 00 00 00 00 00 00 // ..... .......... acpidump 0090: 00 00 00 00 63 6B F0 BF 00 00 00 00 59 70 F0 BF // ....ck......Yp.. -acpidump 0090: E1 D1 79 2A A7 6A 77 D1 B6 20 2A 76 42 C5 D5 E9 // ..y*.jw.. *vB... acpidump 00A0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 // ................ acpidump 00A0: 00 00 00 00 9B 70 F0 BF 00 00 00 00 // .....p...... -acpidump 00A0: B6 43 40 55 44 C3 C9 37 99 5F 41 97 70 F3 D1 F6 // .C@UD..7._A.p... acpidump 00B0: 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // ................ -acpidump 00B0: 07 EC 7B 1A 29 A1 C1 F1 91 FD 48 86 6E 3E CE CB // ..{.).....H.n>.. acpidump 00C0: 00 00 00 00 01 08 00 00 20 10 00 00 00 00 00 00 // ........ ....... -acpidump 00C0: 01 00 00 00 B6 00 00 00 00 00 02 00 4C 45 4E 4F // ............LENO acpidump 00D0: 01 20 00 00 08 10 00 00 00 00 00 00 01 40 00 00 // . ...........@.. -acpidump 00D0: 56 4F 54 50 2D 36 38 20 20 20 57 49 4E 44 4F 57 // VOTP-68 WINDOW acpidump 00E0: 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // (............... -acpidump 00E0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 // S .............. acpidump 00F0: 00 00 00 00 // .... -acpidump 00F0: 00 00 00 00 00 00 8A 6E 2E C9 36 E6 7F 10 8A EA // .......n..6..... -acpidump 01 00 00 00 00 00 00 00 9C 00 00 00 06 02 00 00 \ -acpidump 01 00 00 00 B6 00 00 00 00 00 02 00 4C 45 4E 4F \ -acpidump 0100: 14 AD D2 93 B7 6D 9B 73 AD 83 36 B8 6C A7 A7 EE // .....m.s..6.l... -acpidump 0110: 37 47 16 FE F3 FC CD C7 89 84 06 16 91 0B 1E 81 // 7G.............. -acpidump 0120: 11 42 B1 35 52 57 F6 6B BB 5F A5 81 E2 FF 89 8A // .B.5RW.k._...... -acpidump 0130: 95 C3 4D FC E9 56 4F 4C 34 CC 99 5E 62 E1 90 8A // ..M..VOL4..^b... -acpidump 0140: 54 BE 4A 00 5C 9B A0 86 41 46 66 9D E2 F2 E7 36 // T.J.\...AFf....6 -acpidump 0150: 9C 33 91 27 E7 8D 5C A1 D8 F9 A4 61 8A 1C 04 07 // .3.'..\....a.... -acpidump 0160: E3 2A 1E 14 F1 BD 7F 4C 09 FF 19 11 A9 D4 74 CA // .*.....L......t. -acpidump 0170: 11 9E DC 54 39 BF // ...T9. -acpidump 07 EC 7B 1A 29 A1 C1 F1 91 FD 48 86 6E 3E CE CB \ -acpidump 11 42 B1 35 52 57 F6 6B BB 5F A5 81 E2 FF 89 8A \ -acpidump 14 AD D2 93 B7 6D 9B 73 AD 83 36 B8 6C A7 A7 EE \ -acpidump 15 95 F9 FA FD DC 05 B7 4D 67 7F 2D B3 84 33 20 \ -acpidump 37 47 16 FE F3 FC CD C7 89 84 06 16 91 0B 1E 81 \ -acpidump 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 \ -acpidump 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F \ -acpidump 54 50 2D 36 38 20 20 20 00 00 04 06 54 42 44 20 \ -acpidump 54 BE 4A 00 5C 9B A0 86 41 46 66 9D E2 F2 E7 36 \ -acpidump 56 4F 54 50 2D 36 38 20 20 20 57 49 4E 44 4F 57 \ -acpidump 69 16 4A 9F B1 4B 3A FB 80 20 AA AF C4 F9 3E C1 \ -acpidump 77 9C 70 F0 F3 1B 09 D2 63 5A DC A8 83 F8 5E C9 \ -acpidump 80 49 EE 6A 65 26 72 1E CD BF 5F 2F 96 D6 C0 0A \ -acpidump 92 F5 06 B5 00 B2 3B 29 02 E2 4C 8D C2 F2 BC 41 \ -acpidump 95 C3 4D FC E9 56 4F 4C 34 CC 99 5E 62 E1 90 8A \ -acpidump 9C 33 -acpidump B6 43 40 55 44 C3 C9 37 99 5F 41 97 70 F3 D1 F6 \ -acpidump E1 D1 79 2A A7 6A 77 D1 B6 20 2A 76 42 C5 D5 E9 \ acpidump 0000: 54 4D 4F 52 26 00 00 00 01 EB 50 54 4C 54 44 20 TMOR&.....PTLTD acpidump 0010: 20 20 20 20 20 20 20 20 00 00 04 06 50 54 4C 20 ....PTL acpidump 0020: 03 00 00 00 F3 F4 ...... @@ -287,7 +241,7 @@ acpidump [024h 0036 4] ACPI Table Address 0 : BFF00000 acpidump [024h 0036 4] OspmFlags (decoded below) : 00000000 acpidump [024h 0036 8] Reserved : 0000000000000000 acpidump [024h 0036 8] ACPI Table Address 0 : 00000000BFF00000 -acpidump [024h 0036 338] Software Licensing Structure : \ +acpidump [024h 0036 338] Software Licensing Structure : 53 4C 49 43 76 01 00 00 01 99 4C 45 4E 4F 56 4F /* SLICv.....LENOVO */\ acpidump [025h 0037 3] Reserved : 000000 acpidump [026h 0038 4] Min Event Log Length : 00010000 acpidump [028h 0040 1] Space ID : 00 [SystemMemory]