Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 09 Nov 1998 02:25:45 GMT
From:      gfm@mira.net (Graham Menhennitt)
To:        freebsd-current@FreeBSD.ORG
Subject:   3.0-CURRENT: Adaptec 1540 not detected (with workaround)
Message-ID:  <36484fb6.262608561@mira.net>

next in thread | raw e-mail | index | archive | help
I have just upgraded by 2.2-STABLE machine to 3.0-CURRENT. It couldn't boot
either kernel.GENERIC or the custom kernel that I built. It said that it
didn't detect my Adaptec 1540 (and then paniced with "cannot mount root").
I even specified the exact port address, IRQ and DRQ in userconfig. Still
no go. It used to work fine with 2.2 and was correctly detected by the
kernel on the 3.0 boot floppy.

Eventually I found the problem. In /usr/src/sys/dev/aha/aha.c there is some
code that attempts to distinguish between Adaptec and Buslogic adaptors.
This was failing. I'm not sure what model my adaptor is (I think it's an
'A') but it is a genuine Adaptec. Hence the comment in the code about
cloned cards may apply to some genuine ones also.

Anyway, the following patch worked around the problem for me.

Graham

*** aha.c       Sun Nov  8 17:19:37 1998
--- aha.c_save  Fri Oct 16 09:46:33 1998
***************
*** 324,340 ****
         * this register, and return 0xff, while buslogic cards will return
         * something different.
         *
         * XXX I'm not sure how this will impact other cloned cards.
         */
        if (aha->boardid <= 0x42) {
                status = aha_inb(aha, GEOMETRY_REG);
                if (status != 0xff)
!                       /*return (ENXIO)*/;
        }
  
        return (0);
  }
  
  /*
   * Pull the boards setup information and record it in our softc.
   */
--- 324,340 ----
         * this register, and return 0xff, while buslogic cards will return
         * something different.
         *
         * XXX I'm not sure how this will impact other cloned cards.
         */
        if (aha->boardid <= 0x42) {
                status = aha_inb(aha, GEOMETRY_REG);
                if (status != 0xff)
!                       return (ENXIO);
        }
  
        return (0);
  }
  
  /*
   * Pull the boards setup information and record it in our softc.
   */
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?36484fb6.262608561>