[coreboot] Patch merged into coreboot/master: b7929ad Fix multipleVGA cards resource conflict on Windows

gerrit at coreboot.org gerrit at coreboot.org
Tue Feb 7 00:33:10 CET 2012


the following patch was just integrated into master:
commit b7929add7bf1b40795e0a16ab08fc47858971ccc
Author: Kerry Sheh <shekairui at gmail.com>
Date:   Wed Jan 4 20:51:47 2012 +0800

    Fix multipleVGA cards resource conflict on Windows
    
    If multiple VGA-compatible legacy graphic cards decode the IO range
    3B0-3BB, 3C0-3DF and MEM range A00000-BFFFF.
    Windows 7 complain a resource conflict, so only one VGA card can
    works at the same time.
    
    There is a discussion in coreboot mail list before,
    please reference thread: "how to prevent legacy resource conflictwith   multipleVGA cards"
    http://www.coreboot.org/pipermail/coreboot/2010-October/061508.html
    
    Linux using VGA Arbiter module(vgaarb) to resolve this resource conflict,
    Please see the following linux dmesg log, more information can be found in
    Linux source dir Documentation/vgaarbiter.txt.
    But it seems that windows don't dealwith this conflict.
    ~# dmesg | grep -i vgaarb
    [    0.774076] vgaarb: device added: PCI:0000:00:01.0,decodes=io+mem,owns=io+mem
    [    0.776065] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=none,l
    [    0.780051] vgaarb: loaded
    [    0.784049] vgaarb: bridge control possible 0000:01:00.0
    [    0.788050] vgaarb: bridge control possible 0000:00:01.0
    
    For the second legacy graphic device, coreboot already disabled the
    IO and MEM decode in function set_vga_bridge_bits().
    But it will be enabled again in function pci_set_resource(),
    if the second legacy vga-compatible graphic device take any IO/MEM resources.
    
    Following log printed by enable_resources() shows the problem:
    ...snip...
    PCI: 00:00.0 cmd <- 06
    PCI: 00:01.0 subsystem <- 1022/1410
    PCI: 00:01.0 cmd <- 07                <== The first graphic device
    PCI: 00:01.1 subsystem <- 1022/1410
    PCI: 00:01.1 cmd <- 02
    PCI: 00:02.0 bridge ctrl <- 0003
    PCI: 00:02.0 cmd <- 07
    ...snip...
    PCI: 01:00.0 cmd <- 03                <== The second graphic device
    PCI: 01:00.1 cmd <- 02
    PCI: 02:00.0 cmd <- 02
    PCI: 03:00.0 cmd <- 03
    done.
    ...snip...
    
    
    The IO & MEM decoding on the second vga graphic device should be disabled.
    Please reference PCI spec. section 3.10 in detail.
    set_vga_bridge_bits() would do this work for us, it did the right thing,
    but was put to the wrong place, the setting would be overwritten by
    assign_resources() later.
    
    In order to make sure the set_vga_bridge_bits() setting not be
    overwritten by others, moving the call of set_vga_bridge_bits()
    to the end of dev_configure(), instead of at the beginning.
    
    This patch resolved the dual graphic cards resource conflict in windows7,
    multiple vga-compatible graphic cards can work together in windows7.
    
    
    Signed-off-by: Kerry Sheh <shekairui at gmail.com>
    Signed-off-by: Kerry Sheh <kerry.she at amd.com>
    Change-Id: I0de5e3761b51e2723d9c1dc0c39fff692e3a779d

Build-Tested: build bot (Jenkins) at Wed Jan  4 13:17:09 2012, giving +1
Reviewed-By: Marc Jones <marcj303 at gmail.com> at Tue Feb  7 00:32:50 2012, giving +2
See http://review.coreboot.org/489 for details.

-gerrit




More information about the coreboot mailing list