More than 4 IDE interfaces and kernel 2.1.82

Richard Jones (rjones@orchestream.com)
Thu, 29 Jan 1998 19:12:31 +0000


This is a multi-part message in MIME format.
--------------758C7D08A998323169D27D4B
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

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
--------------758C7D08A998323169D27D4B
Content-Type: text/plain; charset=us-ascii; name="patch1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="patch1"

--- 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; }

--------------758C7D08A998323169D27D4B Content-Type: text/plain; charset=us-ascii; name="patch2" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch2"

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

--------------758C7D08A998323169D27D4B Content-Type: text/plain; charset=us-ascii; name="patch3" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch3"

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

--------------758C7D08A998323169D27D4B Content-Type: text/plain; charset=us-ascii; name="patch4" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch4"

--- 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);

--------------758C7D08A998323169D27D4B--