lkml.org 
[lkml]   [2005]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 15/29] PCI: remove PCI_BRIDGE_CTL_VGA handling from setup-bus.c
    From: Ivan Kokshaysky <ink@jurassic.park.msu.ru>

    The setup-bus code doesn't work correctly for configurations
    with more than one display adapter in the same PCI domain.
    This stuff actually is a leftover of an early 2.4 PCI setup code
    and apparently it stopped working after some "bridge_ctl" changes.
    So the best thing we can do is just to remove it and rely on the fact
    that any firmware *has* to configure VGA port forwarding for the boot
    display device properly.

    But then we need to ensure that the bus->bridge_ctl will always
    contain valid information collected at the probe time, therefore
    the following change in pci_scan_bridge() is needed.

    Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
    Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

    ---
    drivers/pci/probe.c | 2 +-
    drivers/pci/setup-bus.c | 12 ------------
    2 files changed, 1 insertion(+), 13 deletions(-)

    --- gregkh-2.6.orig/drivers/pci/probe.c 2005-07-29 11:29:50.000000000 -0700
    +++ gregkh-2.6/drivers/pci/probe.c 2005-07-29 11:36:23.000000000 -0700
    @@ -507,7 +507,7 @@
    pci_write_config_dword(dev, PCI_PRIMARY_BUS, buses);

    if (!is_cardbus) {
    - child->bridge_ctl = PCI_BRIDGE_CTL_NO_ISA;
    + child->bridge_ctl = bctl | PCI_BRIDGE_CTL_NO_ISA;
    /*
    * Adjust subordinate busnr in parent buses.
    * We do this before scanning for children because
    --- gregkh-2.6.orig/drivers/pci/setup-bus.c 2005-07-29 11:29:50.000000000 -0700
    +++ gregkh-2.6/drivers/pci/setup-bus.c 2005-07-29 11:36:23.000000000 -0700
    @@ -51,8 +51,6 @@
    struct resource_list head, *list, *tmp;
    int idx;

    - bus->bridge_ctl &= ~PCI_BRIDGE_CTL_VGA;
    -
    head.next = NULL;
    list_for_each_entry(dev, &bus->devices, bus_list) {
    u16 class = dev->class >> 8;
    @@ -62,10 +60,6 @@
    class == PCI_CLASS_BRIDGE_HOST)
    continue;

    - if (class == PCI_CLASS_DISPLAY_VGA ||
    - class == PCI_CLASS_NOT_DEFINED_VGA)
    - bus->bridge_ctl |= PCI_BRIDGE_CTL_VGA;
    -
    pdev_sort_resources(dev, &head);
    }

    @@ -509,12 +503,6 @@

    pbus_assign_resources_sorted(bus);

    - if (bus->bridge_ctl & PCI_BRIDGE_CTL_VGA) {
    - /* Propagate presence of the VGA to upstream bridges */
    - for (b = bus; b->parent; b = b->parent) {
    - b->bridge_ctl |= PCI_BRIDGE_CTL_VGA;
    - }
    - }
    list_for_each_entry(dev, &bus->devices, bus_list) {
    b = dev->subordinate;
    if (!b)
    --
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-07-30 02:57    [W:0.032 / U:90.152 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site