Kevin,
Your patch does fix the problem with USB thumbdrives.
I tested on a Gizmo (Family14/SB800) board.
Thanks,
Dave
----- Original Message -----
> From: "Kevin O'Connor" <kevin(a)koconnor.net>
> To: "Dave Frodin" <dave.frodin(a)se-eng.com>
> Cc: "seabios" <seabios(a)seabios.org>
> Sent: Sunday, July 14, 2013 11:59:11 AM
> Subject: Re: [SeaBIOS] Commit b98a4b1 prevents USB drives from being detected
>
> On Fri, Jul 12, 2013 at 03:22:43PM -0500, Dave Frodin wrote:
>
> > I'm using the current seabios (master or stable) as a payload for
> > coreboot. If I build the current seabios I've found that commit
> > b98a4b1 "Convert PCIDevices list to use standard list manipultion
> > code." prevents the system from finding USB thumbdrives. The USB
> > keyboard and mouse still work.
>
> Thanks. The PCI list changes broke the ordering of the PCIDevices
> list. Can you confirm the patch below fixes it for you?
>
> -Kevin
>
>
> commit 2a9aeabdfb34374ecac25e7a8d21c9e368618cd4
> Author: Kevin O'Connor <kevin(a)koconnor.net>
> Date: Sun Jul 14 13:55:52 2013 -0400
>
> Fix USB EHCI detection that was broken in hlist conversion of PCIDevices.
>
> Make sure the PCI device list is ordered in bus order.
>
> Don't iterate past the end of the list when detecting EHCI devices.
>
> Signed-off-by: Kevin O'Connor <kevin(a)koconnor.net>
>
> diff --git a/src/pci.c b/src/pci.c
> index 6163a29..dc62c5c 100644
> --- a/src/pci.c
> +++ b/src/pci.c
> @@ -122,6 +122,7 @@ pci_probe_devices(void)
> }
> memset(dev, 0, sizeof(*dev));
> hlist_add(&dev->node, pprev);
> + pprev = &dev->node.next;
> count++;
>
> // Find parent device.
> diff --git a/src/usb.c b/src/usb.c
> index ecccd75..42541ff 100644
> --- a/src/usb.c
> +++ b/src/usb.c
> @@ -444,7 +444,7 @@ usb_setup(void)
> }
> if (ehcipci->class == PCI_CLASS_SERIAL_USB)
> found++;
> - ehcipci = container_of(
> + ehcipci = container_of_or_null(
> ehcipci->node.next, struct pci_device, node);
> if (!ehcipci || (pci_bdf_to_busdev(ehcipci->bdf)
> != pci_bdf_to_busdev(pci->bdf)))
>