lkml.org 
[lkml]   [2012]   [Feb]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/23] PCI: Strict checking of valid range for bridge
    Date
    children bridges busn range should be able to be allocated from parent bus range.

    to avoid overlapping between sibling bridges on same bus.

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    drivers/pci/probe.c | 24 ++++++++++++++++++++++++
    1 files changed, 24 insertions(+), 0 deletions(-)

    diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
    index ee10c44..19aa415 100644
    --- a/drivers/pci/probe.c
    +++ b/drivers/pci/probe.c
    @@ -770,6 +770,30 @@ reduce_needed_size:
    return ret;
    }

    +static int __devinit pci_bridge_check_busn_broken(struct pci_bus *bus,
    + struct pci_dev *dev,
    + int secondary, int subordinate)
    +{
    + int broken = 0;
    +
    + struct resource busn_res;
    + int ret;
    +
    + memset(&busn_res, 0, sizeof(struct resource));
    + dev_printk(KERN_DEBUG, &dev->dev,
    + "check if busn %02x-%02x is in busn_res: %pR\n",
    + secondary, subordinate, &bus->busn_res);
    + ret = allocate_resource(&bus->busn_res, &busn_res,
    + (subordinate - secondary + 1),
    + secondary, subordinate,
    + 1, NULL, NULL);
    + if (ret)
    + broken = 1;
    + else
    + release_resource(&busn_res);
    +
    + return broken;
    +}
    /*
    * If it's a bridge, configure it and scan the bus behind it.
    * For CardBus bridges, we don't scan behind as the devices will
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-02-24 11:27    [W:0.020 / U:29.276 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site