lkml.org 
[lkml]   [2011]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v2 14/29] sparc/PCI: convert to pci_create_root_bus() for correct root bus resources
    From
    Date
    Convert from pci_create_bus() to pci_create_root_bus().  This way the root
    bus resources are correct immediately. This patch doesn't fix anything
    because sparc fixed them before scanning the bus, but it makes it more
    consistent with other architectures.

    I didn't work out where pcibios_fixup_bus() is called. I don't see a
    use of pci_scan_bus(), pci_scan_bus_parented(), or pci_scan_child_bus().

    CC: David S. Miller <davem@davemloft.net>
    Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
    ---
    arch/sparc/kernel/pci.c | 18 +++++++-----------
    1 files changed, 7 insertions(+), 11 deletions(-)

    diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
    index 1e94f94..929e7a2 100644
    --- a/arch/sparc/kernel/pci.c
    +++ b/arch/sparc/kernel/pci.c
    @@ -684,23 +684,26 @@ static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus)
    struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,
    struct device *parent)
    {
    + struct list_head resources;
    struct device_node *node = pbm->op->dev.of_node;
    struct pci_bus *bus;

    printk("PCI: Scanning PBM %s\n", node->full_name);

    - bus = pci_create_bus(parent, pbm->pci_first_busno, pbm->pci_ops, pbm);
    + INIT_LIST_HEAD(&resources);
    + pci_add_resource(&resources, &pbm->io_space);
    + pci_add_resource(&resources, &pbm->mem_space);
    + bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops,
    + pbm, resources);
    if (!bus) {
    printk(KERN_ERR "Failed to create bus for %s\n",
    node->full_name);
    + pci_free_resource_list(&resources);
    return NULL;
    }
    bus->secondary = pbm->pci_first_busno;
    bus->subordinate = pbm->pci_last_busno;

    - bus->resource[0] = &pbm->io_space;
    - bus->resource[1] = &pbm->mem_space;
    -
    pci_of_scan_bus(pbm, node, bus);
    pci_bus_add_devices(bus);
    pci_bus_register_of_sysfs(bus);
    @@ -710,13 +713,6 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,

    void __devinit pcibios_fixup_bus(struct pci_bus *pbus)
    {
    - struct pci_pbm_info *pbm = pbus->sysdata;
    -
    - /* Generic PCI bus probing sets these to point at
    - * &io{port,mem}_resouce which is wrong for us.
    - */
    - pbus->resource[0] = &pbm->io_space;
    - pbus->resource[1] = &pbm->mem_space;
    }

    void pcibios_update_irq(struct pci_dev *pdev, int irq)


    \
     
     \ /
      Last update: 2011-10-14 06:31    [W:0.026 / U:4.048 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site