summaryrefslogtreecommitdiffstats
path: root/resources/libreboot/patch/kgpe-d16/0123-northbridge-amd-amdfam10-Work-around-sporadic-lockup.patch
blob: 98bf95a4b2e175322991fa66e15bc3857cfb04a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
From e3c6eaf075a7991c4723e386fb215532fd9af4d0 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
Date: Thu, 20 Aug 2015 15:53:25 -0500
Subject: [PATCH 123/146] northbridge/amd/amdfam10: Work around sporadic
 lockups when CC6 enabled

---
 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 e374ed4..a8d9ce6 100644
--- a/src/northbridge/amd/amdfam10/northbridge.c
+++ b/src/northbridge/amd/amdfam10/northbridge.c
@@ -812,6 +812,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.7.9.5