lkml.org 
[lkml]   [1998]   [Mar]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
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 13:41    [W:0.057 / U:2.892 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site