From 7d6f0bf10efbb3139c56e1e124370b1a29edc6ea Mon Sep 17 00:00:00 2001 From: Scott Duplichan Date: Sat, 9 Jul 2011 20:14:20 -0500 Subject: 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 Acked-by: Marshall Buschman Reviewed-on: http://review.coreboot.org/91 Tested-by: build bot (Jenkins) Reviewed-by: Peter Stuge --- src/mainboard/asrock/e350m1/acpi_tables.c | 5 +++++ src/northbridge/amd/agesa/family14/ssdt.asl | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mainboard/asrock/e350m1/acpi_tables.c b/src/mainboard/asrock/e350m1/acpi_tables.c index 20b0dc2f60..cd0a996861 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 e69012bc66..1e694db68d 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 */ { -- cgit v1.2.3