lkml.org 
[lkml]   [1998]   [Mar]   [9]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateMon, 9 Mar 1998 11:03:03 +0100 (MET)
FromGabriel Paubert <>
SubjectRe: Boot Problem with 2.1.89

On Sun, 8 Mar 1998, Don Fisher wrote:

> I have ASUS P55T2P4D two processor mother board with a
> Adaptec 1542B SCSI controller.  The only devices on the SCSI
> controller are the two tape drives that show below.  When
> the system boots it halts leaving the following display
> (copied from my Camcorder so it may not be exact :-()
> 
> vendor: Exabyte  Model: EXB-8505BSQANXR1  Rev: 0781
> Type: Sequential-Access                   ANSI SCSI
> revision:
> Vendor: Segate  Model: DAT   01106-XXX    Rev: 703b
> Type: Sequential-Access                   ANSI SCSI
> revision:
> scsi detected total.
> Unable to handle kernel paging request an virtual address
> 33344544

In human readable form , it is "DE43". Let me guess, you are using 
gcc-2.8 or egcs and the de4x5 network driver ?
(Last one confirmed after looking at the config).
So this is the known problem with gcc-2.8/egcs and string.h.
Since de4x5 has been updated in the 2.1.88->2.1.89 patch, it's becoming
quite clear (after all it is this driver which started the whole thread). 

I have an ad-hoc patch (attached) which worked with the driver in
November. It cures the code generation in _this_ case, but it might not
patch cleanly now. It's an ad-hoc hack, but declaring the signatures
array as static simply makes the problem disappear (and also make
the code shorter by avoiding an array initialization in function entry
code).

  Gabriel.

--- linux-2.0.30/drivers/net/de4x5.c.virgin	Sun Oct  5 18:39:18 1997
+++ linux-2.0.30/drivers/net/de4x5.c	Sun Oct  5 18:54:38 1997
@@ -3026,10 +3026,11 @@
 /*
 ** Look for a particular board name in the EISA configuration space
 */
+static c_char * const signatures[] = DE4X5_SIGNATURE;
+
 static int
 EISA_signature(char *name, s32 eisa_id)
 {
-    c_char *signatures[] = DE4X5_SIGNATURE;
     char ManCode[DE4X5_STRLEN];
     union {
 	s32 ID;
@@ -3064,8 +3065,7 @@
 static int
 PCI_signature(char *name, struct bus_type *lp)
 {
-    c_char *de4x5_signatures[] = DE4X5_SIGNATURE;
-    int i, status = 0, siglen = sizeof(de4x5_signatures)/sizeof(c_char *);
+    int i, status = 0, siglen = sizeof(signatures)/sizeof(c_char *);
     
     if (lp->chipset == DC21040) {
 	strcpy(name, "DE434/5");
@@ -3079,7 +3079,7 @@
     }
     name[8] = '\0';
     for (i=0; i<siglen; i++) {
-	if (strstr(name,de4x5_signatures[i])!=NULL) break;
+	if (strstr(name,signatures[i])!=NULL) break;
     }
     if (i == siglen) {
 	if (dec_only) {
\
 
 \ /
  Last update: 2005-03-22 12:41    [from the cache]
©2003-2008