Arthur Heymans has uploaded a new change for review. ( https://review.coreboot.org/19607 )
Change subject: nb/intel/x4x: Don't run NGI if IGD has not been assigned VGA cycles ......................................................................
nb/intel/x4x: Don't run NGI if IGD has not been assigned VGA cycles
The NGI writes to legacy vga registers which can hang some discrete VGA devices. (mostly AMD devices, Nvidia are fine)
TESTED on ga-g41m-es2l
Change-Id: I0a03e35c0d7f2532edd6cc5e62d1cf07dab57f60 Signed-off-by: Arthur Heymans arthur@aheymans.xyz --- M src/northbridge/intel/x4x/gma.c 1 file changed, 9 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/07/19607/1
diff --git a/src/northbridge/intel/x4x/gma.c b/src/northbridge/intel/x4x/gma.c index c2df074..b013c47 100644 --- a/src/northbridge/intel/x4x/gma.c +++ b/src/northbridge/intel/x4x/gma.c @@ -356,7 +356,7 @@
static void gma_func0_init(struct device *dev) { - u16 reg16; + u16 reg16, ggc; u32 reg32;
/* IGD needs to be Bus Master */ @@ -370,7 +370,14 @@ reg16 |= 0xbc; pci_write_config16(dev_find_slot(0, PCI_DEVFN(0x2, 0)), 0xcc, reg16);
- if (IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT)) + ggc = pci_read_config16(dev_find_slot(0, PCI_DEVFN(0, 0)), D0F0_GGC); + + /* + * Don't run native graphic init when VGA cycles are not assigned since + * this can cause issues with some discrete GPUs. + */ + if (IS_ENABLED(CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT) && + !(ggc & (1 << 1))) native_init(dev); else pci_dev_init(dev);