acpica-tools/0043-Support-S3PT-in-a-big-endian-world.patch
DistroBaker 80dc240519 Merged update from upstream sources
This is an automated DistroBaker update from upstream sources.
If you do not know what this is about or would like to opt out,
contact the OSCI team.

Source: https://src.fedoraproject.org/rpms/acpica-tools.git#defe2b64332fc44bf9915c8f57d2614c529cdb43
2020-10-31 12:18:15 +01:00

97 lines
3.1 KiB
Diff

From 5805d42c0cec5366daa12e0f4caed7a58b13fe5b Mon Sep 17 00:00:00 2001
From: Al Stone <ahs3@redhat.com>
Date: Mon, 19 Oct 2020 17:30:30 -0400
Subject: [PATCH 5/5] Support S3PT in a big-endian world
---
source/common/dmtbdump2.c | 15 +++++++++------
source/compiler/dttable2.c | 4 +++-
2 files changed, 12 insertions(+), 7 deletions(-)
Index: acpica-unix2-20200925/source/common/dmtbdump2.c
===================================================================
--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c
+++ acpica-unix2-20200925/source/common/dmtbdump2.c
@@ -1809,6 +1809,8 @@ AcpiDmDumpS3pt (
ACPI_FPDT_HEADER *Subtable;
ACPI_DMTABLE_INFO *InfoTable;
ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
+ UINT32 S3ptTableLength = AcpiUtReadUint32(&S3ptTable->Length);
+ UINT16 SubtableType;
/* Main table */
@@ -1820,19 +1822,20 @@ AcpiDmDumpS3pt (
}
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
- while (Offset < S3ptTable->Length)
+ while (Offset < S3ptTableLength)
{
/* Common subtable header */
AcpiOsPrintf ("\n");
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
+ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable,
Subtable->Length, AcpiDmTableInfoS3ptHdr);
if (ACPI_FAILURE (Status))
{
return 0;
}
- switch (Subtable->Type)
+ SubtableType = AcpiUtReadUint16(&Subtable->Type);
+ switch (SubtableType)
{
case ACPI_S3PT_TYPE_RESUME:
@@ -1847,7 +1850,7 @@ AcpiDmDumpS3pt (
default:
AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
- Subtable->Type);
+ SubtableType);
/* Attempt to continue */
@@ -1860,7 +1863,7 @@ AcpiDmDumpS3pt (
}
AcpiOsPrintf ("\n");
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
+ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable,
Subtable->Length, InfoTable);
if (ACPI_FAILURE (Status))
{
@@ -1874,7 +1877,7 @@ NextSubtable:
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length);
}
- return (S3ptTable->Length);
+ return (S3ptTableLength);
}
Index: acpica-unix2-20200925/source/compiler/dttable2.c
===================================================================
--- acpica-unix2-20200925.orig/source/compiler/dttable2.c
+++ acpica-unix2-20200925/source/compiler/dttable2.c
@@ -1188,6 +1188,7 @@ DtCompileS3pt (
DT_SUBTABLE *ParentTable;
ACPI_DMTABLE_INFO *InfoTable;
DT_FIELD *SubtableStart;
+ UINT16 S3ptHeaderType;
Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
@@ -1215,7 +1216,8 @@ DtCompileS3pt (
S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
- switch (S3ptHeader->Type)
+ S3ptHeaderType = AcpiUtReadUint16(&S3ptHeader->Type);
+ switch (S3ptHeaderType)
{
case ACPI_S3PT_TYPE_RESUME: