lkml.org 
[lkml]   [2012]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 07/11] x86, PCI: break down get_current_resource()
    Date
    change it to probe_pci_root_info, aka only do one thing.

    1. remove resource list head from pci_root_info
    2. make get_current_resources() not pass resources
    move out add_resources calling out of yet.
    3. rename get_current_resourcs name to probe_pci_root_info

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    arch/x86/pci/acpi.c | 34 +++++++++++++---------------------
    1 files changed, 13 insertions(+), 21 deletions(-)

    diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
    index 304ccf0..763f7bb 100644
    --- a/arch/x86/pci/acpi.c
    +++ b/arch/x86/pci/acpi.c
    @@ -12,7 +12,6 @@ struct pci_root_info {
    char *name;
    unsigned int res_num;
    struct resource *res;
    - struct list_head *resources;
    int busnum;
    };

    @@ -277,7 +276,8 @@ static void coalesce_windows(struct pci_root_info *info, unsigned long type)
    }
    }

    -static void add_resources(struct pci_root_info *info)
    +static void add_resources(struct pci_root_info *info,
    + struct list_head *resources)
    {
    int i;
    struct resource *res, *root, *conflict;
    @@ -301,7 +301,7 @@ static void add_resources(struct pci_root_info *info)
    "ignoring host bridge window %pR (conflicts with %s %pR)\n",
    res, conflict->name, conflict);
    else
    - pci_add_resource(info->resources, res);
    + pci_add_resource(resources, res);
    }
    }

    @@ -313,41 +313,30 @@ static void free_pci_root_info(struct pci_root_info *info)
    }

    static void
    -get_current_resources(struct pci_root_info *info,
    - struct acpi_device *device, int busnum,
    - int domain, struct list_head *resources)
    +probe_pci_root_info(struct pci_root_info *info, struct acpi_device *device,
    + int busnum, int domain)
    {
    size_t size;

    info->bridge = device;
    info->res_num = 0;
    - info->resources = resources;
    acpi_walk_resources(device->handle, METHOD_NAME__CRS, count_resource,
    info);
    if (!info->res_num)
    return;

    size = sizeof(*info->res) * info->res_num;
    + info->res_num = 0;
    info->res = kmalloc(size, GFP_KERNEL);
    if (!info->res)
    return;

    info->name = kasprintf(GFP_KERNEL, "PCI Bus %04x:%02x", domain, busnum);
    if (!info->name)
    - goto name_alloc_fail;
    + return;

    - info->res_num = 0;
    acpi_walk_resources(device->handle, METHOD_NAME__CRS, setup_resource,
    info);
    -
    - if (pci_use_crs) {
    - add_resources(info);
    -
    - return;
    - }
    -
    -name_alloc_fail:
    - free_pci_root_info(info);
    }

    struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root)
    @@ -412,15 +401,18 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_pci_root *root)
    memcpy(bus->sysdata, sd, sizeof(*sd));
    kfree(sd);
    } else {
    - get_current_resources(&info, device, busnum, domain,
    - &resources);
    + probe_pci_root_info(&info, device, busnum, domain);

    /*
    * _CRS with no apertures is normal, so only fall back to
    * defaults or native bridge info if we're ignoring _CRS.
    */
    - if (!pci_use_crs)
    + if (pci_use_crs)
    + add_resources(&info, &resources);
    + else {
    + free_pci_root_info(&info);
    x86_pci_root_bus_resources(busnum, &resources);
    + }
    bus = pci_create_root_bus(NULL, busnum, &pci_root_ops, sd,
    &resources);
    if (bus)
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-02-28 03:07    [W:0.025 / U:63.804 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site