Re: [PATCH 2.6.18-rc5] PCI: sort device lists breadth-first

From: Matt Domsch
Date: Fri Sep 08 2006 - 14:49:51 EST


On Fri, Sep 08, 2006 at 11:20:35AM -0700, Andrew Morton wrote:
> On Thu, 7 Sep 2006 22:14:22 -0500
> Matt Domsch <Matt_Domsch@xxxxxxxx> wrote:
>
> > @@ -189,6 +189,8 @@ static int __init pcibios_init(void)
> >
> > pcibios_resource_survey();
> >
> > + if (!(pci_probe & PCI_NO_SORT))
> > + pci_sort_breadthfirst();
> >
> > ...
> >
> > --- a/drivers/pci/probe.c
> > +++ b/drivers/pci/probe.c
> > @@ -1055,3 +1055,95 @@ EXPORT_SYMBOL(pci_scan_bridge);
> > EXPORT_SYMBOL(pci_scan_single_device);
> > EXPORT_SYMBOL_GPL(pci_scan_child_bus);
> > #endif
> > +
> > +static int pci_sort_bf_cmp(const struct pci_dev *a, const struct pci_dev *b)
> > +static void pci_insertion_sort_klist(struct pci_dev *a, struct list_head *list,
> > +static void pci_sort_breadthfirst_klist(void)
> > +static void pci_insertion_sort_devices(struct pci_dev *a, struct list_head *list,
> > +static void pci_sort_breadthfirst_devices(void)
> > +void pci_sort_breadthfirst(void)
>
> I think all these functions can+should be __init?
>
> > +extern void pci_sort_breadthfirst(void);
>
> In which case this needs the __init tag too (new rule, due to frv (at least)).

Will fix up immediately. I also see that it's making indirect calls
through the (*cmp)() pointer, which is interesting only of there's
other code that's going to be doing insertion sorting. For now, a
direct call to the comparison function would be a little cleaner.

Thanks for the review!
Matt

--
Matt Domsch
Software Architect
Dell Linux Solutions linux.dell.com & www.dell.com/linux
Linux on Dell mailing lists @ http://lists.us.dell.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/