aboutsummaryrefslogtreecommitdiff
path: root/resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch')
-rw-r--r--resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch40
1 files changed, 40 insertions, 0 deletions
diff --git a/resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch b/resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch
new file mode 100644
index 00000000..2d12303c
--- /dev/null
+++ b/resources/libreboot/patch/kgpe-d16/0121-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch
@@ -0,0 +1,40 @@
+From b26909b4b537b7e3b1e5a5b1379ae7745c1e36b3 Mon Sep 17 00:00:00 2001
+From: Timothy Pearson <tpearson@raptorengineeringinc.com>
+Date: Thu, 20 Aug 2015 15:53:25 -0500
+Subject: [PATCH 121/139] northbridge/amd/amdfam10: Work around sporadic
+ lockups when CC6 enabled
+
+Change-Id: If31140651f25f9c524a824b2da552ce3690eae18
+Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
+---
+ src/northbridge/amd/amdfam10/northbridge.c | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/src/northbridge/amd/amdfam10/northbridge.c b/src/northbridge/amd/amdfam10/northbridge.c
+index 58b0079..8bd664d 100644
+--- a/src/northbridge/amd/amdfam10/northbridge.c
++++ b/src/northbridge/amd/amdfam10/northbridge.c
+@@ -814,6 +814,20 @@ static void amdfam10_domain_read_resources(device_t dev)
+ else
+ qword = 0x1000000;
+
++ /* FIXME
++ * The BKDG appears to be incorrect as to the location of the CC6 save region
++ * lower boundary on non-interleaved systems, causing lockups on attempted write
++ * to the CC6 save region.
++ *
++ * For now, work around by allocating the maximum possible CC6 save region size.
++ *
++ * Determine if this is a BKDG error or a setup problem and remove this warning!
++ */
++ qword = (0x1 << 27);
++ max_range_limit = (((uint64_t)(pci_read_config32(get_node_pci(max_node, 1), 0x124) & 0x1fffff)) << 27) - 1;
++
++ printk(BIOS_INFO, "Reserving CC6 save segment base: %08llx size: %08llx\n", (max_range_limit + 1), qword);
++
+ /* Reserve the CC6 save segment */
+ reserved_ram_resource(dev, 8, (max_range_limit + 1) >> 10, qword >> 10);
+ }
+--
+1.9.1
+