Signed-off-by: Andrew Morton --- drivers/ide/Kconfig | 3 +++ drivers/ide/ide.c | 10 +++++----- drivers/ide/setup-pci.c | 2 ++ include/linux/ide.h | 5 +++++ 4 files changed, 15 insertions(+), 5 deletions(-) diff -puN drivers/ide/Kconfig~ide-ide-pci-pcibus-order drivers/ide/Kconfig --- a/drivers/ide/Kconfig~ide-ide-pci-pcibus-order +++ a/drivers/ide/Kconfig @@ -371,6 +371,9 @@ config IDEPCI_SHARE_IRQ It is safe to say Y to this question, in most cases. If unsure, say N. +config IDEPCI_PCIBUS_ORDER + def_bool PCI && BLK_DEV_IDE=y && BLK_DEV_IDEPCI + config BLK_DEV_OFFBOARD bool "Boot off-board chipsets first support" depends on PCI && BLK_DEV_IDEPCI diff -puN drivers/ide/ide.c~ide-ide-pci-pcibus-order drivers/ide/ide.c --- a/drivers/ide/ide.c~ide-ide-pci-pcibus-order +++ a/drivers/ide/ide.c @@ -172,7 +172,7 @@ static int system_bus_speed; /* holds wh DECLARE_MUTEX(ide_cfg_sem); __cacheline_aligned_in_smp DEFINE_SPINLOCK(ide_lock); -#ifdef CONFIG_BLK_DEV_IDEPCI +#ifdef CONFIG_IDEPCI_PCIBUS_ORDER static int ide_scan_direction; /* THIS was formerly 2.2.x pci=reverse */ #endif @@ -1333,13 +1333,13 @@ static int __init ide_setup(char *s) return 1; } -#ifdef CONFIG_BLK_DEV_IDEPCI +#ifdef CONFIG_IDEPCI_PCIBUS_ORDER if (!strcmp(s, "ide=reverse")) { ide_scan_direction = 1; printk(" : Enabled support for IDE inverse scan order.\n"); return 1; } -#endif /* CONFIG_BLK_DEV_IDEPCI */ +#endif #ifdef CONFIG_BLK_DEV_IDEACPI if (!strcmp(s, "ide=noacpi")) { @@ -1599,9 +1599,9 @@ extern void __init h8300_ide_init(void); */ static void __init probe_for_hwifs (void) { -#ifdef CONFIG_BLK_DEV_IDEPCI +#ifdef CONFIG_IDEPCI_PCIBUS_ORDER ide_scan_pcibus(ide_scan_direction); -#endif /* CONFIG_BLK_DEV_IDEPCI */ +#endif #ifdef CONFIG_ETRAX_IDE { diff -puN drivers/ide/setup-pci.c~ide-ide-pci-pcibus-order drivers/ide/setup-pci.c --- a/drivers/ide/setup-pci.c~ide-ide-pci-pcibus-order +++ a/drivers/ide/setup-pci.c @@ -772,6 +772,7 @@ out: EXPORT_SYMBOL_GPL(ide_setup_pci_devices); +#ifdef CONFIG_IDEPCI_PCIBUS_ORDER /* * Module interfaces */ @@ -878,3 +879,4 @@ void __init ide_scan_pcibus (int scan_di __pci_register_driver(d, d->driver.owner, d->driver.mod_name); } } +#endif diff -puN include/linux/ide.h~ide-ide-pci-pcibus-order include/linux/ide.h --- a/include/linux/ide.h~ide-ide-pci-pcibus-order +++ a/include/linux/ide.h @@ -1205,9 +1205,14 @@ void ide_init_disk(struct gendisk *, ide extern int ideprobe_init(void); +#ifdef CONFIG_IDEPCI_PCIBUS_ORDER extern void ide_scan_pcibus(int scan_direction) __init; extern int __ide_pci_register_driver(struct pci_driver *driver, struct module *owner, const char *mod_name); #define ide_pci_register_driver(d) __ide_pci_register_driver(d, THIS_MODULE, KBUILD_MODNAME) +#else +#define ide_pci_register_driver(d) pci_register_driver(d) +#endif + void ide_pci_setup_ports(struct pci_dev *, struct ide_pci_device_s *, int, ata_index_t *); extern void ide_setup_pci_noise (struct pci_dev *dev, struct ide_pci_device_s *d); _