PCI: How to find if BIOS has already enabled the device

From: Parag Warudkar
Date: Fri May 27 2005 - 19:36:53 EST


I am trying to trace the root cause of an annoying problem with a USB Storage
device -

My laptop's BIOS supports booting from USB devices. I have attached an
external USB HDD to a USB 2.0 port. If I boot Linux with the HDD attached and
powered on, load of OHCI-HCD module hangs the machine for around 2 minutes -
after that it recovers and all is fine. I have tried different distros
without luck, but while installing debian, I figured out that the hang
happens after ohci-hcd calls pci_enable_device() for the USB controller.

This does not happen when the boot is complete. I.e. if I attach the HDD after
boot is complete (BIOS did not get a chance to enable it beforehand) load of
ohci-hcd (during and after boot) does not hang the machine.

I think since the machine supports booting from USB HDD, the BIOS must be
enabling the USB controller and attached device early during boot, and when
ohci-hcd tries to re-enable it, it doesn't like it and leads to a hang.

My question - Is it possible to detect if the USB controller is already
enabled and skip enabling it second time?

Thanks

Parag
-
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/