Marshall Buschman (mbuschman@lucidmachines.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/91
-gerrit
commit 67576b4126a4c5be0df8236601ad0728fc1b24fd Author: Scott Duplichan scott@notabs.org Date: Sat Jul 9 20:14:20 2011 -0500
ASRock E350M1: ACPI-related BSOD fix
On installing/starting Windows (tested with Win7 Ultimate) the system crashes with a Blue Screen of Death, reporting an ACPI BIOS error.
From Scott Duplichan: To avoid the Windows BSOD, the uninitialized value TOM1 in the SSDT must be corrected. The attached patch does this. It uses the older patching method, and not the (possibly preferred) AML generation method. To simplify the patching operation, I moved the AML item 'TOM1' to the start of the SSDT. The patch also includes code to confirm the AML variable TOM1 is at the expected offset before patching.
Also tested & working with Linux.
Change-Id: I59cedc366e09d98f690b093d6a21fc0c864559c3 Signed-off-by: Scott Duplichan scott@notabs.org Acked-by: Marshall Buschman mbuschman@lucidmachines.com --- src/mainboard/asrock/e350m1/acpi_tables.c | 5 +++++ src/northbridge/amd/agesa/family14/ssdt.asl | 2 +- 2 files changed, 6 insertions(+), 1 deletions(-)
diff --git a/src/mainboard/asrock/e350m1/acpi_tables.c b/src/mainboard/asrock/e350m1/acpi_tables.c index 20b0dc2..cd0a996 100644 --- a/src/mainboard/asrock/e350m1/acpi_tables.c +++ b/src/mainboard/asrock/e350m1/acpi_tables.c @@ -185,6 +185,11 @@ unsigned long write_acpi_tables(unsigned long start) memcpy(ssdt, &AmlCode_ssdt, sizeof(acpi_header_t)); current += ssdt->length; memcpy(ssdt, &AmlCode_ssdt, ssdt->length); + + char *position = ssdt; + if (memcmp (position + 50, "TOM1", 4) == 0) + *(u32 *) (position + 55) = __readmsr (0xc001001a); + /* recalculate checksum */ ssdt->checksum = 0; ssdt->checksum = acpi_checksum((unsigned char *)ssdt,ssdt->length); diff --git a/src/northbridge/amd/agesa/family14/ssdt.asl b/src/northbridge/amd/agesa/family14/ssdt.asl index e69012b..1e694db 100644 --- a/src/northbridge/amd/agesa/family14/ssdt.asl +++ b/src/northbridge/amd/agesa/family14/ssdt.asl @@ -30,6 +30,7 @@ DefinitionBlock ("SSDT.aml", "SSDT", 1, "AMD-FAM14H", "AMD-ACPI", 0x1000)
Scope (_SB.PCI0) { + Name (TOM1, 0xaaaaaaaa) Name (BUSN, Package (0x20) /* HC_NUMS */ { 0x11111111, @@ -264,7 +265,6 @@ DefinitionBlock ("SSDT.aml", "SSDT", 1, "AMD-FAM14H", "AMD-ACPI", 0x1000) 0x44444444 }) Name (SBLK, 0x11) - Name (TOM1, 0xaaaaaaaa) Name (SBDN, 0xbbbbbbbb) Name (HCLK, Package (0x20) /* HC_POSSIBLE_NUM */ {