diff options
author | Zhang, Yanmin <yanmin_zhang@linux.intel.com> | 2007-07-15 23:39:39 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 09:05:40 -0700 |
commit | ed4aaadb1a7913f509f05d3e67840541a180713f (patch) | |
tree | 7089fd2fe0f56d552ea153e2925363d0febaa952 /drivers/pci | |
parent | 012bfdf00ce2f36a1add75a0d18303656c6294ef (diff) | |
download | op-kernel-dev-ed4aaadb1a7913f509f05d3e67840541a180713f.zip op-kernel-dev-ed4aaadb1a7913f509f05d3e67840541a180713f.tar.gz |
fix jvc cdrom drive lockup
Before calling init_hwif_default, ide_unregister gets lock ide_lock and
disables irq. init_hwif_default calls ide_default_io_base which calls
pci_get_device and later pci_get_subsys tries to apply for semaphore
pci_bus_sem and goes to sleep.
Mostly, pci_get_device should be called when irq is turned on.
ide_default_io_base just needs find if list pci_devices is empty.
Signed-off-by: Zhang Yanmin <yanmin.zhang@intel.com>
Cc: Greg KH <greg@kroah.com>
Cc: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/probe.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index a7bce75..34b8dae0 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -22,6 +22,18 @@ EXPORT_SYMBOL(pci_root_buses); LIST_HEAD(pci_devices); +/* + * Some device drivers need know if pci is initiated. + * Basically, we think pci is not initiated when there + * is no device in list of pci_devices. + */ +int no_pci_devices(void) +{ + return list_empty(&pci_devices); +} + +EXPORT_SYMBOL(no_pci_devices); + #ifdef HAVE_PCI_LEGACY /** * pci_create_legacy_files - create legacy I/O port and memory files |