Re: [PATCH 09/11] pci: pci_bridge_release_res

Alex Chiang
2010-01-16T04:58:33Z

> +void pci_bridge_release_res(struct pci_bus *bus)
> +{
> + int idx;
> + bool changed = false;
> + struct pci_dev *dev;
> + struct resource *r;
> +
> + /* The root bus? */
> + if (!bus->self)
> + return;
> +
> + /* for pci bridges res only */
> + dev = bus->self;
> + if ((dev->class >> 8) != PCI_CLASS_BRIDGE_PCI)
> + return;
> +
> + for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_BRIDGE_RESOURCES + 3;
> + idx++) {
> + r = &dev->resource[idx];
> + if (!r->parent)
> + continue;
> +
> + /* if there are children under that, we should not release it */
> + if (r->child)
> + continue;
> +
> + if (!release_resource(r)) {
> + dev_printk(KERN_DEBUG, &dev->dev,
> + "resource %d %pR released\n", idx, r);
> + /* old size is not kept */
> + r->start = 0;
> + r->end = 0;
> + r->flags = 0;
> + changed = true;
> + }
> + }
> +
> + if (changed)
> + pci_setup_bridge(bus);
> +}
> +EXPORT_SYMBOL_GPL(pci_bridge_release_res);
> +
> static void pci_bridge_release_resources(struct pci_bus *bus,
> unsigned long type)

My brain is melting.

Why do we have pci_bridge_release_res and pci_bridge_release_resources?

The code is similar, but not the same. The names are similar but
not the same.

Any chance you could factor similarities, and then write a
comment that explains the differences to a developer?

thanks,
/ac