[coreboot] New patch to review: 67576b4 ASRock E350M1: ACPI-related BSOD fix

Marshall Buschman (mbuschman@lucidmachines.com) gerrit at coreboot.org
Sun Jul 10 03:17:19 CEST 2011


Marshall Buschman (mbuschman at 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 at 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 at notabs.org>
    Acked-by: Marshall Buschman <mbuschman at 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 */
 		{




More information about the coreboot mailing list