From nobody@FreeBSD.ORG Wed Nov 17 13:07:34 1999 Return-Path: Received: by hub.freebsd.org (Postfix, from userid 32767) id E5ACA14CCD; Wed, 17 Nov 1999 13:07:33 -0800 (PST) Message-Id: <19991117210733.E5ACA14CCD@hub.freebsd.org> Date: Wed, 17 Nov 1999 13:07:33 -0800 (PST) From: p.kessen@lixus.com Sender: nobody@FreeBSD.ORG To: freebsd-gnats-submit@freebsd.org Subject: Compaq EISA array controller not working X-Send-Pr-Version: www-1.0 >Number: 14960 >Category: kern >Synopsis: Compaq EISA array controller not working >Confidential: no >Severity: serious >Priority: medium >Responsible: freebsd-bugs >State: closed >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Nov 17 13:10:03 PST 1999 >Closed-Date: Sun Apr 16 07:00:31 PDT 2000 >Last-Modified: Sun Apr 16 07:01:55 PDT 2000 >Originator: Patrick >Release: 3.3-release >Organization: >Environment: FreeBSD enterprise.startrek.home 3.3-RELEASE FreeBSD 3.3-RELEASE #0: Wed Nov 17 21:24:50 CET 1999 root@enterprise.startrek.home:/usr/src/sys/compile/CPQ i386 >Description: When I've compiled a kernel with the Compaq Smart array adapter support at boot time the output is: ida: port address (0xffffffff) out of range ida0 not found >How-To-Repeat: I've compiled the kernel with the options suggested in the LINT file for using the controller. As far as I know this problem only exhists on machines with the EISA version of the Smart controller. I have the battery-backuped caching version of the EISA SMART controller. >Fix: >Release-Note: >Audit-Trail: From: Patrick Kessen To: freebsd-gnats-submit@freebsd.org Cc: p.kessen@lixus.com Subject: RE: kern/14960: Compaq EISA array controller not working Date: Fri, 19 Nov 1999 03:21:15 +0100 The status now is that the controller is detected: in ida.c I changed ________________this:_____________________ if (dev->id_iobase) { /* check out the configured iobase if given one */ slot = dev->id_iobase / 0x1000; if (slot == 0 || slot > MAX_EISA_SLOT) { ______________into this:____________________________________________ if (dev->id_iobase) { /* check out the configured iobase if given one */ slot = 6; /* dev->id_iobase / 0x1000; */ if (slot == 0 || slot > MAX_EISA_SLOT) { _____________meaning:______________________________________________ My eisa smart array adapter is in eisa slot 6, look no further. as far as I see the code then has no problem determining the portaddress and irq. _________this is the boot output:___________________________________ /kernel: eisa0: /kernel: Probing for devices on the EISA bus /kernel: ep0: <3Com 3C579-TP EISA Network Adapter> at 0x1000-0x100f, 0x1c80-0x1c89 irq 5 /kernel: ep0: on eisa0 slot 1 /kernel: ep0: aui/utp[*UTP*] address 00:20:af:1d:1b:e3 /kernel: eisa0:6 unknown device /kernel: Probing for devices on PCI bus 0: /kernel: ncr0: rev 0x02 int a irq 10 on pci0.10.0 /kernel: vga0: rev 0x01 int a irq 14 on pci0.12.0 /kernel: chip0: rev 0x04 on pci0.15.0 /kernel: Probing for devices on the ISA bus: /kernel: sc0 on isa /kernel: sc0: VGA color <16 virtual consoles, flags=0x0> /kernel: atkbdc0 at 0x60-0x6f on motherboard /kernel: atkbd0 irq 1 on isa /kernel: psm0 irq 12 on isa /kernel: psm0: model Generic PS/2 mouse, device ID 0 /kernel: sio0 at 0x3f8-0x3ff irq 4 flags 0x10 on isa /kernel: sio0: type 16550A /kernel: sio1 at 0x2f8-0x2ff irq 3 flags 0x10 on isa /kernel: sio1: type 16550A /kernel: ppc0 at 0x3bc irq 7 on isa /kernel: ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode /kernel: lpt0: on ppbus 0 /kernel: lpt0: Interrupt-driven port /kernel: ida0: drvs=1 firm_rev=2.26 /kernel: ida0 at 0x6000-0x6fff irq 15 on eisa slot 6 /kernel: ida0: unit 0 (id0): /kernel: id0: 10028MB (20538720 total sec), 2517 cyl, 255 head, 32 sec, bytes/sec 512 /kernel: ida: wdc vector stealing off (mode = never, boot major = 4) /kernel: ida0: irq with no handler ____ ida0: irq with no handler__________________ this one is a mystery to me, in the visual kernel config under the miscelanious section there are 2 ida0 entries so the 2nd one must be the one this warning is about. ______more info_______________________________ I essentially defined the following as well options IDA_CUCKOO_MODE=0 this I had to do because if I didn't my machine would do a trap12 right after detecting the array adapter. By essentially I mean that when I added it to my kernel config file (CPQ) the make depend action came with the following error: controller ida0 at isa? bio irq ? vector idaintr disk id0 at ida0 drive 0 disk id1 at ida0 drive 1 disk id2 at ida0 drive 2 disk id3 at ida0 drive 3 options IDA_CUCKOO_MODE=0 controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 disk fd0 at fdc0 drive 0 disk fd1 at fdc0 drive 1 device sio0 at isa? port "IO_COM1" tty flags 0x10 irq 4 device sio1 at isa? port "IO_COM2" tty flags 0x10 irq 3 options CONSPEED=9600 #default speed for serial console (default 9600) controller eisa0 device ep0 at eisa? device ep0 at eisa? controller pci0 controller ncr0 controller ppbus0 device lpt0 at ppbus? device ppc0 at isa? port? tty irq 7 File CPQ saved. root@enterprise# /usr/sbin/config -r CPQ Removing old directory ../../compile/CPQ: Done. CPQ:96: unknown option "IDA_CUCKOO_MODE" Don't forget to do a ``make depend'' Kernel build directory is ../../compile/CPQ ___________how I solved this problem_______________ I changed another bit of code in ida.c ________________this:____________________________ /* IDA wdc vector stealing (cuckoo) control */ #define IDA_CUCKOO_NEVER 0 /* never steal wdc vectors */ #define IDA_CUCKOO_ROOTWD 1 /* steal iff rootdev is wd device */ #define IDA_CUCKOO_ROOTNOTIDA 2 /* steal if rootdev not ida device */ #define IDA_CUCKOO_ALWAYS 3 /* always steal wdc vectors */ #ifndef IDA_CUCKOO_MODE #define IDA_CUCKOO_MODE IDA_CUCKOO_ALWAYS #endif ________________into this:_____________________ /* IDA wdc vector stealing (cuckoo) control */ #define IDA_CUCKOO_NEVER 0 /* never steal wdc vectors */ #define IDA_CUCKOO_ROOTWD 1 /* steal iff rootdev is wd device */ #define IDA_CUCKOO_ROOTNOTIDA 2 /* steal if rootdev not ida device */ #define IDA_CUCKOO_ALWAYS 3 /* always steal wdc vectors */ #ifndef IDA_CUCKOO_MODE #define IDA_CUCKOO_MODE IDA_CUCKOO_NEVER /* IDA_CUCKOO_ALWAYS */ #endif ________________now there's more___________________________________ no ida or id devices are in /dev I can't make them with MAKEDEV How do I make them. Now my controller is found I'd like to use the storage space;) State-Changed-From-To: open->closed State-Changed-By: mdodd State-Changed-When: Sun Apr 16 07:00:31 PDT 2000 State-Changed-Why: IDA driver in CURRENT will work with EISA controllers now. >Unformatted: