Cobalt IDE fix, again
PATCH 1/1 Cobalt IDE fix, again
Fix long delay during Cobalt boot whilst scanning non-existent interfaces. The logic is copied from i386 i.e. we only scan 2 legacy ports if we have PCI IDE.
P.
include/asm-mips/mach-generic/ide.h +21 -36
@@ -20,17 +20,9 @@#include <linux/stddef.h> #include <asm/processor.h> -#ifndef MAX_HWIFS -# ifdef CONFIG_BLK_DEV_IDEPCI -#define MAX_HWIFS 10 -# else -#define MAX_HWIFS 6 -# endif -#endif -#define IDE_ARCH_OBSOLETE_DEFAULTS -static __inline__int ide_probe_legacy (void ) +static __inline__int ide_legacy_ports (void ) {#ifdef CONFIG_PCI struct pci_dev *dev;
@@ -38,11 +30,11 @@ (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) {pci_dev_put (dev); -return 1 ; +return 2 ; }return 0 ;#elif defined(CONFIG_EISA ) || defined(CONFIG_ISA ) -return 1 ; +return 6 ;#else return 0 ;#endif
@@ -50,30 +42,26 @@static __inline__int ide_default_irq (unsigned long base) { -if (ide_probe_legacy ()) -switch (base) { -case 0x1f0 : -return 14 ; -case 0x170 : -return 15 ; -case 0x1e8 : -return 11 ; -case 0x168 : -return 10 ; -case 0x1e0 : -return 8 ; -case 0x160 : -return 12 ; -default : -return 0 ; - } -else -return 0 ; +switch (base) { +case 0x1f0 : +return 14 ; +case 0x170 : +return 15 ; +case 0x1e8 : +return 11 ; +case 0x168 : +return 10 ; +case 0x1e0 : +return 8 ; +case 0x160 : +return 12 ; + } +return 0 ; }static __inline__unsigned long ide_default_io_base (int index) { -if (ide_probe_legacy ()) +if (index <ide_legacy_ports ())switch (index) {case 0 :return 0x1f0 ;
@@ -87,11 +75,8 @@return 0x1e0 ;case 5 :return 0x160 ; -default : -return 0 ; - } -else -return 0 ; + } +return 0 ; }#define IDE_ARCH_OBSOLETE_INIT
Quoted 3 lines · Peter Horton
Fix long delay during Cobalt boot whilst scanning non-existent interfaces. The logic is copied from i386 i.e. we only scan 2 legacy ports if we have PCI IDE.
Looks good to me now.
Alan
now I get:
drivers/ide/mips/swarm.c: In function ‘swarm_ide_probe’:drivers/ide/mips/swarm.c:78: error: ‘CONFIG_IDE_MAX_HWIFS’ undeclared (first use in this function) drivers/ide/mips/swarm.c:78: error: (Each undeclared identifier is reported only once drivers/ide/mips/swarm.c:78: error: for each function it appears in.)
Signature · 2 lines
Martin Michlmayr http://www.cyrius.com/
Quoted 7 lines · Martin Michlmayr
now I get:
drivers/ide/mips/swarm.c: In function ???swarm_ide_probe???:drivers/ide/mips/swarm.c:78: error: ???CONFIG_IDE_MAX_HWIFS??? undeclared (first use in this function)drivers/ide/mips/swarm.c:78: error: (Each undeclared identifier is reported only oncedrivers/ide/mips/swarm.c:78: error: for each function it appears in.)
Bum, I munged the patch. Fixed patch below ...
P.
include/asm-mips/mach-generic/ide.h +21 -28
@@ -30,7 +30,7 @@#define IDE_ARCH_OBSOLETE_DEFAULTS -static __inline__int ide_probe_legacy (void ) +static __inline__int ide_legacy_ports (void ) {#ifdef CONFIG_PCI struct pci_dev *dev;
@@ -38,11 +38,11 @@ (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) {pci_dev_put (dev); -return 1 ; +return 2 ; }return 0 ;#elif defined(CONFIG_EISA ) || defined(CONFIG_ISA ) -return 1 ; +return 6 ;#else return 0 ;#endif
@@ -50,30 +50,26 @@static __inline__int ide_default_irq (unsigned long base) { -if (ide_probe_legacy ()) -switch (base) { -case 0x1f0 : -return 14 ; -case 0x170 : -return 15 ; -case 0x1e8 : -return 11 ; -case 0x168 : -return 10 ; -case 0x1e0 : -return 8 ; -case 0x160 : -return 12 ; -default : -return 0 ; - } -else -return 0 ; +switch (base) { +case 0x1f0 : +return 14 ; +case 0x170 : +return 15 ; +case 0x1e8 : +return 11 ; +case 0x168 : +return 10 ; +case 0x1e0 : +return 8 ; +case 0x160 : +return 12 ; + } +return 0 ; }static __inline__unsigned long ide_default_io_base (int index) { -if (ide_probe_legacy ()) +if (index <ide_legacy_ports ())switch (index) {case 0 :return 0x1f0 ;
@@ -87,11 +83,8 @@return 0x1e0 ;case 5 :return 0x160 ; -default : -return 0 ; - } -else -return 0 ; + } +return 0 ; }#define IDE_ARCH_OBSOLETE_INIT
Martin Michlmayr
Acked-by Alan CoxResending a patch that still needs to be applied.
From: Peter Horton <[email protected]>
[MIPS] Fix long IDE detection delay by not scanning non-existent channels.
Fix long delay during Cobalt boot whilst scanning non-existent interfaces. The logic is copied from i386 i.e. we only scan 2 legacy ports if we have PCI IDE.
---
ide.h | 49 +++++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 28 deletions(-)
include/asm-mips/mach-generic/ide.h +21 -28
@@ -30,7 +30,7 @@#define IDE_ARCH_OBSOLETE_DEFAULTS -static __inline__int ide_probe_legacy (void ) +static __inline__int ide_legacy_ports (void ) {#ifdef CONFIG_PCI struct pci_dev *dev;
@@ -38,11 +38,11 @@ (dev = pci_get_class(PCI_CLASS_BRIDGE_ISA << 8, NULL)) != NULL) {pci_dev_put (dev); -return 1 ; +return 2 ; }return 0 ;#elif defined(CONFIG_EISA ) || defined(CONFIG_ISA ) -return 1 ; +return 6 ;#else return 0 ;#endif
@@ -50,30 +50,26 @@static __inline__int ide_default_irq (unsigned long base) { -if (ide_probe_legacy ()) -switch (base) { -case 0x1f0 : -return 14 ; -case 0x170 : -return 15 ; -case 0x1e8 : -return 11 ; -case 0x168 : -return 10 ; -case 0x1e0 : -return 8 ; -case 0x160 : -return 12 ; -default : -return 0 ; - } -else -return 0 ; +switch (base) { +case 0x1f0 : +return 14 ; +case 0x170 : +return 15 ; +case 0x1e8 : +return 11 ; +case 0x168 : +return 10 ; +case 0x1e0 : +return 8 ; +case 0x160 : +return 12 ; + } +return 0 ; }static __inline__unsigned long ide_default_io_base (int index) { -if (ide_probe_legacy ()) +if (index <ide_legacy_ports ())switch (index) {case 0 :return 0x1f0 ;
@@ -87,11 +83,8 @@return 0x1e0 ;case 5 :return 0x160 ; -default : -return 0 ; - } -else -return 0 ; + } +return 0 ; }#define IDE_ARCH_OBSOLETE_INIT
Signature · 2 lines
Martin Michlmayr http://www.cyrius.com/