From a81ccf759276fe239cebe3d998278af93c735dff Mon Sep 17 00:00:00 2001 From: Dean Nelson Date: Fri, 7 Oct 2022 08:57:08 -0500 Subject: [PATCH] Fix Compile issue with CEDT and add template Bugzilla: https://bugzilla.redhat.com/2123131 Upstream Status: https://github.com/acpica/acpica.git commit d9798f5275bb20ab88ac854ba04e6e3bdb22cf6d Author: Lawrence Hileman Date: Mon Jan 17 15:24:34 2022 -0800 Fix Compile issue with CEDT and add template Resolves: rhbz#2123131 Signed-off-by: Dean Nelson --- CEDT-support_09.patch | 173 ++++++++++++++++++++++++++++++++++++++++++ acpica-tools.spec | 2 + 2 files changed, 175 insertions(+) create mode 100644 CEDT-support_09.patch diff --git a/CEDT-support_09.patch b/CEDT-support_09.patch new file mode 100644 index 0000000..e62bf04 --- /dev/null +++ b/CEDT-support_09.patch @@ -0,0 +1,173 @@ +commit d9798f5275bb20ab88ac854ba04e6e3bdb22cf6d +Author: Lawrence Hileman +Date: Mon Jan 17 15:24:34 2022 -0800 + + Fix Compile issue with CEDT and add template + +diff --git a/source/compiler/dttable1.c b/source/compiler/dttable1.c +index 972be5f..09aca3a 100644 +--- a/source/compiler/dttable1.c ++++ b/source/compiler/dttable1.c +@@ -262,6 +262,7 @@ DtCompileCedt ( + + while (*PFieldList) + { ++ int InsertFlag = 1; // if CFMWS and has more than one target, then set to zero later + SubtableStart = *PFieldList; + + /* CEDT Header */ +@@ -283,24 +284,68 @@ DtCompileCedt ( + { + case ACPI_CEDT_TYPE_CHBS: + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt0, &Subtable); ++ if (ACPI_FAILURE (Status)) ++ { ++ return (Status); ++ } + break; +- case ACPI_CEDT_TYPE_CFMWS: ++ case ACPI_CEDT_TYPE_CFMWS: { ++ unsigned char *dump; ++ unsigned int idx, offset, max = 0; ++ ++ // Compile table with first "Interleave target" + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt1, &Subtable); ++ if (ACPI_FAILURE (Status)) ++ { ++ return (Status); ++ } ++ ++ // Look in buffer for the number of targets ++ offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CFMWS, InterleaveWays); ++ dump = (unsigned char *) Subtable->Buffer - 4; // place at beginning of cedt1 ++ max = 0x01 << dump[offset]; // 2^max, so 0=1, 1=2, 2=4, 3=8. 8 is MAX ++ if (max > 8) max=1; // Error in encoding Interleaving Ways. ++ if (max == 1) // if only one target, then break here. ++ break; // break if only one target. ++ ++ // We need to add more interleave targets, so write the current Subtable. ++ ParentTable = DtPeekSubtable (); ++ DtInsertSubtable (ParentTable, Subtable); // Insert AcpiDmTableInfoCedt1 table so we can put in ++ DtPushSubtable (Subtable); // the targets > the first. ++ ++ // Now, find out all interleave targets beyond the first. ++ for (idx = 1; idx < max; idx++) { ++ ParentTable = DtPeekSubtable (); ++ ++ if (*PFieldList) ++ { ++ Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt1_te, &Subtable); ++ if (ACPI_FAILURE (Status)) ++ { ++ return (Status); ++ } ++ if (Subtable) ++ { ++ DtInsertSubtable (ParentTable, Subtable); // got a target, so insert table. ++ InsertFlag = 0; ++ } ++ } ++ } ++ ++ DtPopSubtable (); ++ ParentTable = DtPeekSubtable (); + break; ++ } + + default: + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT"); + return (AE_ERROR); + } + +- /* CEDT Subtable */ +- if (ACPI_FAILURE (Status)) +- { +- return (Status); +- } +- + ParentTable = DtPeekSubtable (); +- DtInsertSubtable (ParentTable, Subtable); ++ if (InsertFlag == 1) { ++ DtInsertSubtable (ParentTable, Subtable); ++ } + DtPopSubtable (); + } + +diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h +index 5fdd599..a62da8b 100644 +--- a/source/compiler/dttemplate.h ++++ b/source/compiler/dttemplate.h +@@ -108,23 +108,58 @@ const unsigned char TemplateBoot[] = + + const unsigned char TemplateCedt[] = + { +- 0x43,0x45,0x44,0x54,0x84,0x00,0x00,0x00, /* 00000000 "CEDT...." */ +- 0x01,0x8B,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" */ +- 0x05,0x01,0x21,0x20,0x00,0x00,0x20,0x00, /* 00000020 "..! .. ." */ +- 0x33,0x33,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000028 "33......" */ +- 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xD5, /* 00000030 ".....!C." */ +- 0x00,0x00,0x00,0x00,0x45,0x23,0x01,0x00, /* 00000038 "....E#.." */ ++ 0x43,0x45,0x44,0x54,0x9c,0x01,0x00,0x00, /* 00000000 "CEDT...." */ ++ 0x01,0x87,0x49,0x4e,0x54,0x45,0x4c,0x20, /* 00000008 "..INTEL " */ ++ 0x54,0x45,0x4d,0x50,0x4c,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ ++ 0x00,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c, /* 00000018 "....INTL" */ ++ 0x17,0x12,0x21,0x20,0x00,0x00,0x20,0x00, /* 00000020 "..! .. ." */ ++ 0x00,0x5e,0xba,0x00,0x00,0x00,0x00,0x00, /* 00000028 ".^......" */ ++ 0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00, /* 00000030 "........" */ ++ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, /* 00000038 "..... .." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000040 "...... ." */ +- 0x44,0x44,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000048 "DD......" */ +- 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xA5, /* 00000050 ".....!C." */ +- 0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000058 "....E#.." */ ++ 0x01,0x5e,0xba,0x00,0x00,0x00,0x00,0x00, /* 00000048 ".^......" */ ++ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, /* 00000050 "..... .." */ ++ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, /* 00000058 "..... .." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000060 "...... ." */ +- 0x55,0x55,0xCD,0xAB,0x01,0x00,0x00,0x00, /* 00000068 "UU......" */ +- 0x00,0x00,0x00,0x00,0x00,0x21,0x43,0xB5, /* 00000070 ".....!C." */ +- 0x00,0x00,0x00,0x00,0x45,0x23,0xB1,0x00, /* 00000078 "....E#.." */ +- 0x00,0x00,0x00,0x00 /* 00000080 "...." */ ++ 0x02,0x5e,0xba,0x00,0x00,0x00,0x00,0x00, /* 00000068 ".^......" */ ++ 0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00, /* 00000070 ".....0.." */ ++ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, /* 00000078 "..... .." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00, /* 00000080 "...... ." */ ++ 0x03,0x5e,0xba,0x00,0x00,0x00,0x00,0x00, /* 00000088 ".^......" */ ++ 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00, /* 00000090 ".....@.." */ ++ 0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00, /* 00000098 "..... .." */ ++ 0x00,0x00,0x00,0x00,0x01,0x00,0x28,0x00, /* 000000a0 "......(." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000a8 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000b0 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000b8 "........" */ ++ 0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00, /* 000000c0 "........" */ ++ 0x00,0x5e,0xba,0x00,0x01,0x00,0x28,0x00, /* 000000c8 ".^....(." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d0 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d8 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000e0 "........" */ ++ 0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00, /* 000000e8 "........" */ ++ 0x01,0x5e,0xba,0x00,0x01,0x00,0x28,0x00, /* 000000f0 ".^....(." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000f8 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ ++ 0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00, /* 00000110 "........" */ ++ 0x02,0x5e,0xba,0x00,0x01,0x00,0x28,0x00, /* 00000118 ".^....(." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ ++ 0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ ++ 0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00, /* 00000138 "........" */ ++ 0x03,0x5e,0xba,0x00,0x01,0x00,0x2c,0x00, /* 00000140 ".^....,." */ ++ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ ++ 0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ ++ 0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000158 "........" */ ++ 0x03,0x00,0x00,0x00,0x06,0x00,0x01,0x00, /* 00000160 "........" */ ++ 0x00,0x5e,0xba,0x00,0x01,0x5e,0xba,0x00, /* 00000160 ".^...^.." */ ++ 0x01,0x00,0x2c,0x00,0x00,0x00,0x00,0x00, /* 00000170 "..,....." */ ++ 0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00, /* 00000178 "........" */ ++ 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00, /* 00000180 "........" */ ++ 0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000188 "........" */ ++ 0x0a,0x00,0x01,0x00,0x02,0x5e,0xba,0x00, /* 00000190 ".....^.." */ ++ 0x03,0x5e,0xba,0x00 /* 00000198 ".^.." */ + }; + + const unsigned char TemplateCpep[] = diff --git a/acpica-tools.spec b/acpica-tools.spec index 1e869f7..9e1b10f 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -94,6 +94,7 @@ Patch115: dbtest.patch Patch116: ull-32bit.patch Patch117: wpbt-unicode.patch Patch118: CEDT-support_08.patch +Patch119: CEDT-support_09.patch BuildRequires: make BuildRequires: bison patchutils flex gcc @@ -261,6 +262,7 @@ fi %changelog * Thu Oct 06 2022 Dean Nelson - 20210604-5 - Backport 19b11f91660b ("Add the subtable CFMWS to the CEDT table"). +- Backport d9798f5275bb ("Fix Compile issue with CEDT and add template"). * Mon Oct 03 2022 Dean Nelson - 20210604-4 - Add in big-endian patches for PRMT, RGRT and SVKL tables.