On Thu, Jan 24, 2013 at 4:32 AM, Laszlo Ersek <ler...@redhat.com> wrote: > Such packages should be more compatible with AML parsers in practice: > > /* > * Intel ACPI Component Architecture > * AML Disassembler version 20090123 > * > * Disassembly of SSDT.aml, Thu Jan 24 13:23:26 2013 > * > * > * Original Table Header: > * Signature "SSDT" > * Length 0x00000057 (87) > * Revision 0x01 > * Checksum 0x9D > * OEM ID "REDHAT" > * OEM Table ID "OVMF " > * OEM Revision 0x00000001 (1) > * Compiler ID "INTL" > * Compiler Version 0x20090123 (537461027) > */ > DefinitionBlock ("SSDT.aml", "SSDT", 1, "REDHAT", "OVMF ", 0x00000001) > { > OperationRegion (FWDT, SystemMemory, 0xDFB66F98, 0x00000030) > Name (\_S3, Package (0x04) > { > 0x01, > 0x00, > 0x00, > 0x00 > }) > Name (\_S4, Package (0x04) > { > 0x02, > 0x00, > 0x00, > 0x00 > }) > } > > Testing: > - Checked dmesg in an F18 guest, then selected hibernate and verified the > requested suspend type with a qemu debug patch. The above AML > disassembly also originates from the F18 guest (acpidump + iasld -d). > - Hibernated a Windows 8 Consumer Preview (Build 8250) guest, confirmed > requested suspend type with the same qemu debug patch.
The motivation for this change doesn't seem clear to me from the commit message. Cleanup? Fixes hibernate for a few or all operating systems? -Jordan > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > OvmfPkg/AcpiPlatformDxe/Qemu.c | 58 +++++++++++++++++++++++---------------- > 1 files changed, 34 insertions(+), 24 deletions(-) > > diff --git a/OvmfPkg/AcpiPlatformDxe/Qemu.c b/OvmfPkg/AcpiPlatformDxe/Qemu.c > index 35d667f..8a6ecf7 100644 > --- a/OvmfPkg/AcpiPlatformDxe/Qemu.c > +++ b/OvmfPkg/AcpiPlatformDxe/Qemu.c > @@ -200,16 +200,20 @@ typedef struct { > } FIRMWARE_DATA; > > typedef struct { > - UINT8 NameOp; > - UINT8 RootChar; > - UINT8 NameChar[4]; > - UINT8 PackageOp; > - UINT8 PkgLength; > - UINT8 NumElements; > - UINT8 DWordPrefix; > - UINT8 Pm1aCntSlpTyp; > - UINT8 Pm1bCntSlpTyp; > - UINT8 Reserved[2]; > + UINT8 BytePrefix; > + UINT8 ByteValue; > +} AML_BYTE; > + > +typedef struct { > + UINT8 NameOp; > + UINT8 RootChar; > + UINT8 NameChar[4]; > + UINT8 PackageOp; > + UINT8 PkgLength; > + UINT8 NumElements; > + AML_BYTE Pm1aCntSlpTyp; > + AML_BYTE Pm1bCntSlpTyp; > + AML_BYTE Reserved[2]; > } SYSTEM_STATE_PACKAGE; > > #pragma pack() > @@ -326,12 +330,14 @@ GetSuspendStates ( > '\\', // RootChar > { '_', 'S', 'x', '_' }, // NameChar[4] > 0x12, // PackageOp > - 0x07, // PkgLength > - 0x01, // NumElements > - 0x0c, // DWordPrefix > - 0x00, // Pm1aCntSlpTyp > - 0x00, // Pm1bCntSlpTyp -- we don't support it > - { 0x00, 0x00 } // Reserved > + 0x0A, // PkgLength > + 0x04, // NumElements > + { 0x0A, 0x00 }, // Pm1aCntSlpTyp > + { 0x0A, 0x00 }, // Pm1bCntSlpTyp -- we don't support it > + { // Reserved[2] > + { 0x0A, 0x00 }, > + { 0x0A, 0x00 } > + } > }; > RETURN_STATUS Status; > FIRMWARE_CONFIG_ITEM FwCfgItem; > @@ -343,13 +349,13 @@ GetSuspendStates ( > // > *SuspendToRamSize = sizeof Template; > CopyMem (SuspendToRam, &Template, sizeof Template); > - SuspendToRam->NameChar[2] = '3'; // S3 > - SuspendToRam->Pm1aCntSlpTyp = 1; // PIIX4: STR > + SuspendToRam->NameChar[2] = '3'; // S3 > + SuspendToRam->Pm1aCntSlpTyp.ByteValue = 1; // PIIX4: STR > > *SuspendToDiskSize = sizeof Template; > CopyMem (SuspendToDisk, &Template, sizeof Template); > - SuspendToDisk->NameChar[2] = '4'; // S4 > - SuspendToDisk->Pm1aCntSlpTyp = 2; // PIIX4: POSCL > + SuspendToDisk->NameChar[2] = '4'; // S4 > + SuspendToDisk->Pm1aCntSlpTyp.ByteValue = 2; // PIIX4: POSCL > > // > // check for overrides > @@ -368,16 +374,20 @@ GetSuspendStates ( > // value to be written to the PM control register's SUS_TYP bits. > // > if (SystemStates[3] & BIT7) { > - SuspendToRam->Pm1aCntSlpTyp = SystemStates[3] & (BIT2 | BIT1 | BIT0); > - DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n", SuspendToRam->Pm1aCntSlpTyp)); > + SuspendToRam->Pm1aCntSlpTyp.ByteValue = > + SystemStates[3] & (BIT2 | BIT1 | BIT0); > + DEBUG ((DEBUG_INFO, "ACPI S3 value: %d\n", > + SuspendToRam->Pm1aCntSlpTyp.ByteValue)); > } else { > *SuspendToRamSize = 0; > DEBUG ((DEBUG_INFO, "ACPI S3 disabled\n")); > } > > if (SystemStates[4] & BIT7) { > - SuspendToDisk->Pm1aCntSlpTyp = SystemStates[4] & (BIT2 | BIT1 | BIT0); > - DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n", > SuspendToDisk->Pm1aCntSlpTyp)); > + SuspendToDisk->Pm1aCntSlpTyp.ByteValue = > + SystemStates[4] & (BIT2 | BIT1 | BIT0); > + DEBUG ((DEBUG_INFO, "ACPI S4 value: %d\n", > + SuspendToDisk->Pm1aCntSlpTyp.ByteValue)); > } else { > *SuspendToDiskSize = 0; > DEBUG ((DEBUG_INFO, "ACPI S4 disabled\n")); > -- > 1.7.1 > > > ------------------------------------------------------------------------------ > Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, > MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current > with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft > MVPs and experts. ON SALE this month only -- learn more at: > http://p.sf.net/sfu/learnnow-d2d > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/edk2-devel ------------------------------------------------------------------------------ Free Next-Gen Firewall Hardware Offer Buy your Sophos next-gen firewall before the end March 2013 and get the hardware for free! Learn more. http://p.sf.net/sfu/sophos-d2d-feb _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel