lkml.org 
[lkml]   [1998]   [Jan]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
From
SubjectMore 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);
\
 
 \ /
  Last update: 2005-03-22 13:41    [W:0.060 / U:0.360 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site