Messages in this thread Patches in this message | | | Date | Thu, 29 Jan 1998 19:12:31 +0000 | From | Richard Jones <> | Subject | More than 4 IDE interfaces and kernel 2.1.82 |
| |
Hi:
I'm trying to configure a box with 6 IDE interfaces and not getting very far. I followed the instructions at the top of `ide.c' and patched the kernel correctly, I think, but I get an oops when the kernel tries to probe for ide4 and ide5.
My configuration: Intel motherboard ide0, 1 Promise UltraDMA/33 PCI ide2, 3 Promise UltraDMA/33 PCI ide4, 5
Hopefully the PCI autoconfiguration should have selected the correct ports and IRQs, so I didn't spend too long thinking about those.
My question, then: do you have any patches to the latest versions of the kernels which successfully enable ide4 and ide5, and are you planning on increasing the max number of interfaces in the standard configuration?
Rich.
[root@monster linux]# diff -u include/asm-i386/{ide.h.orig,ide.h} > /tmp/patch1 [root@monster linux]# diff -u drivers/block/{ide.h.orig,ide.h} > /tmp/patch2 [root@monster linux]# diff -u drivers/block/{ide.c.orig,ide.c} > /tmp/patch3 [root@monster linux]# diff -u drivers/block/{ide-probe.c.orig,ide-probe.c} > /tmp/patch4
patches attached ...
-- Richard Jones rjones@orchestream.com Tel: +44 171 460 6141 Fax: .. 4461 Orchestream Ltd. 262a Fulham Rd. London SW10 9EL. "you'll write in PGP: www.four11.com telegraphic, or you won't write at all" [Céline] Copyright © 1998 Richard W.M. Jones--- include/asm-i386/ide.h.orig Fri Jan 30 02:43:13 1998 +++ include/asm-i386/ide.h Fri Jan 30 02:48:53 1998 @@ -16,7 +16,7 @@ typedef unsigned short ide_ioreg_t; #ifndef MAX_HWIFS -#define MAX_HWIFS 4 +#define MAX_HWIFS 6 #endif #define ide_sti() sti() @@ -28,6 +28,8 @@ case 0x170: return 15; case 0x1e8: return 11; case 0x168: return 10; + case 0x1e0: return 8; + case 0x160: return 12; default: return 0; } @@ -40,6 +42,8 @@ case 1: return 0x170; case 2: return 0x1e8; case 3: return 0x168; + case 4: return 0x1e0; + case 5: return 0x160; default: return 0; }--- drivers/block/ide.h.orig Fri Jan 30 02:41:53 1998 +++ drivers/block/ide.h Fri Jan 30 02:50:31 1998 @@ -673,6 +673,12 @@ #if MAX_HWIFS > 3 void do_ide3_request (void); #endif +#if MAX_HWIFS > 4 +void do_ide4_request (void); +#endif +#if MAX_HWIFS > 5 +void do_ide5_request (void); +#endif void ide_init_subdrivers (void); #ifndef _IDE_C--- drivers/block/ide.c.orig Fri Jan 30 02:41:56 1998 +++ drivers/block/ide.c Fri Jan 30 02:50:06 1998 @@ -138,7 +138,7 @@ #include <linux/kerneld.h> #endif /* CONFIG_KERNELD */ -static const byte ide_hwif_to_major[] = {IDE0_MAJOR, IDE1_MAJOR, IDE2_MAJOR, IDE3_MAJOR}; +static const byte ide_hwif_to_major[] = {IDE0_MAJOR, IDE1_MAJOR, IDE2_MAJOR, IDE3_MAJOR, IDE4_MAJOR, IDE5_MAJOR }; static int idebus_parameter; /* holds the "idebus=" parameter */ static int system_bus_speed; /* holds what we think is VESA/PCI bus speed */ @@ -1183,6 +1183,20 @@ } #endif /* MAX_HWIFS > 3 */ +#if MAX_HWIFS > 4 +void do_ide4_request (void) /* invoked with cli() */ +{ + do_hwgroup_request (ide_hwifs[4].hwgroup); +} +#endif /* MAX_HWIFS > 4 */ + +#if MAX_HWIFS > 5 +void do_ide5_request (void) /* invoked with cli() */ +{ + do_hwgroup_request (ide_hwifs[5].hwgroup); +} +#endif /* MAX_HWIFS > 5 */ + void ide_timer_expiry (unsigned long data) { ide_hwgroup_t *hwgroup = (ide_hwgroup_t *) data; @@ -2799,6 +2813,12 @@ #if MAX_HWIFS > 3 EXPORT_SYMBOL(do_ide3_request); #endif /* MAX_HWIFS > 3 */ +#if MAX_HWIFS > 4 +EXPORT_SYMBOL(do_ide4_request); +#endif /* MAX_HWIFS > 4 */ +#if MAX_HWIFS > 5 +EXPORT_SYMBOL(do_ide5_request); +#endif /* MAX_HWIFS > 5 */ /* * Driver module--- drivers/block/ide-probe.c.orig Fri Jan 30 02:55:13 1998 +++ drivers/block/ide-probe.c Fri Jan 30 02:55:17 1998 @@ -662,6 +662,12 @@ #if MAX_HWIFS > 3 case IDE3_MAJOR: rfn = &do_ide3_request; break; #endif +#if MAX_HWIFS > 4 + case IDE4_MAJOR: rfn = &do_ide4_request; break; +#endif +#if MAX_HWIFS > 5 + case IDE5_MAJOR: rfn = &do_ide5_request; break; +#endif default: printk("%s: request_fn NOT DEFINED\n", hwif->name); return (hwif->present = 0); | |