From ed80202e0e2b07771e8521339e67e3ace185ece6 Mon Sep 17 00:00:00 2001 From: Arthur Heymans Date: Sat, 22 Oct 2016 14:16:48 +0200 Subject: [PATCH] UPSTREAM: nb/i945/gma.c: Set the MSAC register correctly This fixes an instability on 945gc where the IGD completely locks up the system, when for instance tasked to do something with compositing (like GNOME or GDM). TESTED on ga-945gcm-s2l and d945gclf TEST: launch GDM (gnome display manager) BUG=None BRANCH=None TEST=None Signed-off-by: Arthur Heymans Reviewed-on: https://review.coreboot.org/17094 Reviewed-by: Nico Huber Tested-by: build bot (Jenkins) Change-Id: Iec49bccf3e3164df9dc1e0b54460a616fe92e04d Reviewed-on: https://chromium-review.googlesource.com/403839 Commit-Ready: Furquan Shaikh Tested-by: Furquan Shaikh Reviewed-by: Aaron Durbin --- src/northbridge/intel/i945/gma.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/northbridge/intel/i945/gma.c b/src/northbridge/intel/i945/gma.c index 4baed80293..aefec8f824 100644 --- a/src/northbridge/intel/i945/gma.c +++ b/src/northbridge/intel/i945/gma.c @@ -32,6 +32,7 @@ #include "chip.h" #define GDRST 0xc0 +#define MSAC 0x62 /* Multi Size Aperture Control */ #define LVDS_CLOCK_A_POWERUP_ALL (3 << 8) #define LVDS_CLOCK_B_POWERUP_ALL (3 << 4) @@ -707,12 +708,25 @@ static void gma_ssdt(device_t device) drivers_intel_gma_displays_ssdt_generate(gfx); } +static void gma_func0_read_resources(device_t dev) +{ + u8 reg8; + + /* Set Untrusted Aperture Size to 256mb */ + reg8 = pci_read_config8(dev, MSAC); + reg8 &= ~0x3; + reg8 |= 0x2; + pci_write_config8(dev, MSAC, reg8); + + pci_dev_read_resources(dev); +} + static struct pci_operations gma_pci_ops = { .set_subsystem = gma_set_subsystem, }; static struct device_operations gma_func0_ops = { - .read_resources = pci_dev_read_resources, + .read_resources = gma_func0_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_dev_enable_resources, .init = gma_func0_init,