lkml.org 
[lkml]   [2009]   [Dec]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/12] pci: add pci_bridge_release_unused_res and pci_bus_release_unused_bridge_res -v2


    On Fri, 18 Dec 2009, Yinghai Lu wrote:
    >
    > ok, please check attached is right or not
    >
    > +static void __release_child_resources(struct resource *r)
    > +{
    > + struct resource *tmp, *p;
    > + resource_size_t size;
    > +
    > + p = r->child;
    > + r->child = NULL;
    > + while (p) {
    > + tmp = p;
    > + p = p->sibling;
    > +
    > + tmp->parent = NULL;
    > + tmp->sibling = NULL;
    > + __release_child_resources(tmp);
    > +
    > + printk(KERN_DEBUG "release child resource %pR\n", tmp);
    > + /* need to restore size, and keep flags */
    > + size = resource_size(tmp);
    > + tmp->start = 0;
    > + tmp->end = size - 1;
    > + }
    > +}

    Ok, this looks mostly right. I do worry about the alignment information:
    you lose that thing for any resource that had IORESOURCE_STARTALIGN set
    when you do this thing. That's pretty fundamental to the whole resource
    code, I suspect we should just finally add a 'alignment' field to the
    resource struct, so that alignment doesn't get lost when a resource is
    allocated.

    (Do a "git grep IORESOURCE_.*ALIGN" to see the kind of stuff I'm talking
    about, and look at he PCI 'setup-bus.c' code that sets that STARTALIGN
    thing).

    So a preliminary ack on the resource.c parts. The rest I'm still a bit
    dubious about, and the whole "we've lost alignment on the resources" is
    probably indicative of how none of the resource code has ever really been
    designed for this kind of "tear down and build back up again" behavior.

    Linus


    \
     
     \ /
      Last update: 2009-12-19 01:45    [W:0.021 / U:4.196 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site