summaryrefslogtreecommitdiffstats
path: root/resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch
diff options
context:
space:
mode:
authorFrancis Rowe <info@gluglug.org.uk>2015-10-18 19:12:53 (EDT)
committer Francis Rowe <info@gluglug.org.uk>2015-10-18 21:32:36 (EDT)
commit0622df6194dbb1b2120743c0fd1cc5e72c380128 (patch)
tree4c858b8c5667fe001a9907ae0578b4ec28a8f513 /resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch
parent5999dba5f71f1c05040a551d2420ab8c7f3a9da4 (diff)
downloadlibreboot-0622df6194dbb1b2120743c0fd1cc5e72c380128.zip
libreboot-0622df6194dbb1b2120743c0fd1cc5e72c380128.tar.gz
libreboot-0622df6194dbb1b2120743c0fd1cc5e72c380128.tar.bz2
KGPE-D16: update patch set (also update coreboot and vboot)
Also contains other fixes from coreboot, like: * 551cff0 Derive lvds_dual_channel from EDID timings. ^ makes single/dual channel LVDS selection on GM45 automatic * 26fc544 lenovo/t60: Enable native intel gfx init. ^ was being maintained in libreboot, now upstreamed so not needed Framebuffer mode was disabled for the KGPE-D16, because only text-mode works at the moment.
Diffstat (limited to 'resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch')
-rw-r--r--resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch212
1 files changed, 0 insertions, 212 deletions
diff --git a/resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch b/resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch
deleted file mode 100644
index 6689711..0000000
--- a/resources/libreboot/patch/kgpe-d16/0090-northbridge-amd-amdfam10-Add-probe-filter-support.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From 92b74cb17d6494327b0fb83af52769aaeef0b083 Mon Sep 17 00:00:00 2001
-From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
-Date: Sun, 2 Aug 2015 21:06:39 -0500
-Subject: [PATCH 090/146] northbridge/amd/amdfam10: Add probe filter support
-
----
- src/cpu/amd/model_10xxx/init_cpus.c | 13 +++
- src/northbridge/amd/amdfam10/northbridge.c | 144 +++++++++++++++++++++++++++-
- 2 files changed, 156 insertions(+), 1 deletion(-)
-
-diff --git a/src/cpu/amd/model_10xxx/init_cpus.c b/src/cpu/amd/model_10xxx/init_cpus.c
-index e7f146f..f716e07 100644
---- a/src/cpu/amd/model_10xxx/init_cpus.c
-+++ b/src/cpu/amd/model_10xxx/init_cpus.c
-@@ -445,6 +445,19 @@ static u32 init_cpus(u32 cpu_init_detectedx, struct sys_info *sysinfo)
-
- cpuSetAMDMSR(id.nodeid);
-
-+ /* Set up probe filter support */
-+ if (is_gt_rev_d()) {
-+ uint8_t node_count;
-+ node_count = (pci_read_config32(NODE_PCI(id.nodeid, 0), 0x60) >> 4) & 0x7;
-+ node_count++;
-+
-+ if (node_count > 1) {
-+ msr_t msr = rdmsr(BU_CFG2_MSR);
-+ msr.hi |= 1 << (42 - 32);
-+ wrmsr(BU_CFG2_MSR, msr);
-+ }
-+ }
-+
- #if CONFIG_SET_FIDVID
- #if CONFIG_LOGICAL_CPUS && CONFIG_SET_FIDVID_CORE0_ONLY
- // Run on all AP for proper FID/VID setup.
-diff --git a/src/northbridge/amd/amdfam10/northbridge.c b/src/northbridge/amd/amdfam10/northbridge.c
-index 7cbb732..2c8ee08 100644
---- a/src/northbridge/amd/amdfam10/northbridge.c
-+++ b/src/northbridge/amd/amdfam10/northbridge.c
-@@ -30,10 +30,13 @@
- #include <lib.h>
- #include <smbios.h>
- #include <cpu/cpu.h>
-+#include <delay.h>
-
- #include <cpu/x86/lapic.h>
-+#include <cpu/x86/cache.h>
- #include <cpu/amd/mtrr.h>
- #include <cpu/amd/amdfam10_sysconf.h>
-+#include <cpu/amd/model_10xxx_msr.h>
- #include <cpu/amd/model_10xxx/ram_calc.h>
-
- #if CONFIG_LOGICAL_CPUS
-@@ -1523,7 +1526,7 @@ static void cpu_bus_scan(device_t dev)
- if(i>=32) {
- busn--;
- devn-=32;
-- pbus = pci_domain->link_list->next);
-+ pbus = pci_domain->link_list->next;
- }
- #endif
-
-@@ -1643,8 +1646,147 @@ static void cpu_bus_scan(device_t dev)
- }
- }
-
-+static void detect_and_enable_probe_filter(device_t dev)
-+{
-+ uint32_t dword;
-+
-+ uint8_t fam15h = 0;
-+ uint8_t rev_gte_d = 0;
-+ uint8_t dual_node = 0;
-+ unsigned nb_cfg_54;
-+ uint32_t f3xe8;
-+ uint32_t family;
-+ uint32_t model;
-+
-+ family = model = cpuid_eax(0x80000001);
-+ model = ((model & 0xf0000) >> 12) | ((model & 0xf0) >> 4);
-+
-+ if (is_fam15h()) {
-+ /* Family 15h or later */
-+ fam15h = 1;
-+ nb_cfg_54 = 1;
-+ }
-+
-+ if ((model >= 0x8) || fam15h)
-+ /* Revision D or later */
-+ rev_gte_d = 1;
-+
-+ if (rev_gte_d)
-+ /* Check for dual node capability */
-+ if (f3xe8 & 0x20000000)
-+ dual_node = 1;
-+
-+ if (rev_gte_d && (sysconf.nodes > 1)) {
-+ /* Enable the probe filter */
-+ uint8_t i;
-+ uint8_t pfmode = 0x0;
-+
-+ uint32_t f3x58[MAX_NODES_SUPPORTED];
-+ uint32_t f3x5c[MAX_NODES_SUPPORTED];
-+
-+ printk(BIOS_DEBUG, "Enabling probe filter\n");
-+
-+ /* Disable L3 and DRAM scrubbers and configure system for probe filter support */
-+ for (i = 0; i < sysconf.nodes; i++) {
-+ device_t f2x_dev = dev_find_slot(0, PCI_DEVFN(0x18 + i, 2));
-+ device_t f3x_dev = dev_find_slot(0, PCI_DEVFN(0x18 + i, 3));
-+
-+ f3x58[i] = pci_read_config32(f3x_dev, 0x58);
-+ f3x5c[i] = pci_read_config32(f3x_dev, 0x5c);
-+ pci_write_config32(f3x_dev, 0x58, f3x58[i] & ~((0x1f << 24) | 0x1f));
-+ pci_write_config32(f3x_dev, 0x5c, f3x5c[i] & ~0x1);
-+
-+ dword = pci_read_config32(f2x_dev, 0x1b0);
-+ dword &= ~(0x7 << 8); /* CohPrefPrbLmt = 0x0 */
-+ pci_write_config32(f2x_dev, 0x1b0, dword);
-+
-+ msr_t msr = rdmsr_amd(BU_CFG2_MSR);
-+ msr.hi |= 1 << (42 - 32);
-+ wrmsr_amd(BU_CFG2_MSR, msr);
-+
-+ if (is_fam15h()) {
-+ uint8_t subcache_size = 0x0;
-+ uint8_t pref_so_repl = 0x0;
-+ uint32_t f3x1c4 = pci_read_config32(f3x_dev, 0x1c4);
-+ if ((f3x1c4 & 0xffff) == 0xcccc) {
-+ subcache_size = 0x1;
-+ pref_so_repl = 0x2;
-+ pfmode = 0x3;
-+ } else {
-+ pfmode = 0x2;
-+ }
-+
-+ dword = pci_read_config32(f3x_dev, 0x1d4);
-+ dword |= 0x1 << 29; /* PFLoIndexHashEn = 0x1 */
-+ dword &= ~(0x3 << 20); /* PFPreferredSORepl = pref_so_repl */
-+ dword |= (pref_so_repl & 0x3) << 20;
-+ dword |= 0x1 << 17; /* PFWayHashEn = 0x1 */
-+ dword |= 0xf << 12; /* PFSubCacheEn = 0xf */
-+ dword &= ~(0x3 << 10); /* PFSubCacheSize3 = subcache_size */
-+ dword |= (subcache_size & 0x3) << 10;
-+ dword &= ~(0x3 << 8); /* PFSubCacheSize2 = subcache_size */
-+ dword |= (subcache_size & 0x3) << 8;
-+ dword &= ~(0x3 << 6); /* PFSubCacheSize1 = subcache_size */
-+ dword |= (subcache_size & 0x3) << 6;
-+ dword &= ~(0x3 << 4); /* PFSubCacheSize0 = subcache_size */
-+ dword |= (subcache_size & 0x3) << 4;
-+ dword &= ~(0x3 << 2); /* PFWayNum = 0x2 */
-+ dword |= 0x2 << 2;
-+ pci_write_config32(f3x_dev, 0x1d4, dword);
-+ } else {
-+ pfmode = 0x2;
-+
-+ dword = pci_read_config32(f3x_dev, 0x1d4);
-+ dword |= 0x1 << 29; /* PFLoIndexHashEn = 0x1 */
-+ dword &= ~(0x3 << 20); /* PFPreferredSORepl = 0x2 */
-+ dword |= 0x2 << 20;
-+ dword |= 0xf << 12; /* PFSubCacheEn = 0xf */
-+ dword &= ~(0x3 << 10); /* PFSubCacheSize3 = 0x0 */
-+ dword &= ~(0x3 << 8); /* PFSubCacheSize2 = 0x0 */
-+ dword &= ~(0x3 << 6); /* PFSubCacheSize1 = 0x0 */
-+ dword &= ~(0x3 << 4); /* PFSubCacheSize0 = 0x0 */
-+ dword &= ~(0x3 << 2); /* PFWayNum = 0x2 */
-+ dword |= 0x2 << 2;
-+ pci_write_config32(f3x_dev, 0x1d4, dword);
-+ }
-+ }
-+
-+ udelay(40);
-+
-+ disable_cache();
-+ asm("wbinvd");
-+ for (i = 0; i < sysconf.nodes; i++) {
-+ device_t f3x_dev = dev_find_slot(0, PCI_DEVFN(0x18 + i, 3));
-+
-+ dword = pci_read_config32(f3x_dev, 0x1c4);
-+ dword |= (0x1 << 31); /* L3TagInit = 1 */
-+ pci_write_config32(f3x_dev, 0x1c4, dword);
-+ do {
-+ } while (pci_read_config32(f3x_dev, 0x1c4) & (0x1 << 31));
-+
-+ dword = pci_read_config32(f3x_dev, 0x1d4);
-+ dword &= ~0x3; /* PFMode = pfmode */
-+ dword |= pfmode & 0x3;
-+ pci_write_config32(f3x_dev, 0x1d4, dword);
-+ do {
-+ } while (!(pci_read_config32(f3x_dev, 0x1d4) & (0x1 << 19)));
-+ }
-+ enable_cache();
-+
-+ /* Reenable L3 and DRAM scrubbers */
-+ for (i = 0; i < sysconf.nodes; i++) {
-+ device_t f3x_dev = dev_find_slot(0, PCI_DEVFN(0x18 + i, 3));
-+
-+ pci_write_config32(f3x_dev, 0x58, f3x58[i]);
-+ pci_write_config32(f3x_dev, 0x5c, f3x5c[i]);
-+ }
-+
-+ }
-+}
-+
- static void cpu_bus_init(device_t dev)
- {
-+ detect_and_enable_probe_filter(dev);
- initialize_cpus(dev->link_list);
- #if CONFIG_AMD_SB_CIMX
- sb_After_Pci_Init();
---
-1.7.9.5
-