Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 29 May 2012 13:55:02 +1100
From:      "=?KOI8-R?Q?=E1=CC=C5=CB=D3=C1=CE=C4=D2_=F7._=FB=D5=D4=CB=CF?=" <AVShutko@mail.khstu.ru>
To:        FreeBSD stable <freebsd-stable@freebsd.org>
Subject:   FreeBSD 9.0-RELEASE amd64 strange interrupts behavior
Message-ID:  <20120529135502.febc8178.AVShutko@mail.khstu.ru>

next in thread | raw e-mail | index | archive | help
Hi, All. I can't get working Adaptec 6805 driver on 9.0 for unknown reason.

I got Supermicro X8DTH-iF based server with two Xeon 5645 (6 cores x 2 thre=
ads),=20
24Gb RAM, Adaptec sas 6805 raid. I downloaded 6805 driver code for FreeBSD =
8.3=20
from adaptec site and compiled it under fresh-installed FreeBSD 9.0-RELEASE=
 (amd64),=20
kldloaded it and got hung and timeouts:

aacu0: <Adaptec RAID Controller> mem 0xf8c00000-0xf8ffffff,0xf8bbc000-0xf8b=
bc7ff,
0xf8bbe000-0xf8bbe0ff irq 50 at device 0.0 on pci132
aacu0: Enable Raw I/O
aacu0: Enable 64-bit array
aacu0: New comm. interface type1 enabled
ioapic2: routing intpin 2 (PCI IRQ 50) to lapic 0 vector 50
aacu0: Adaptec 6805, aac driver 2.4.2-18668
aacu0: Supported Options=3D141f1d7c<WCACHE,DATA64,HOSTTIME,RAID50,WINDOW4GB,
SOFTERR,SGMAP64,ALARM,NONDASD,ADPTINFO,NEWCOMM,ARRAY64BIT,HEATSENSOR>
aacd0: <RAID 6> on aacu0
aacd0: 2860022MB (5857325056 sectors)
GEOM: new disk aacd0
pci133: driver added
pci134: driver added
pci254: driver added
pci255: driver added
aacp0: <SCSI Passthrough Bus> on aacu0
aacp1: <SCSI Passthrough Bus> on aacu0
aacp2: <SCSI Passthrough Bus> on aacu0
pci0: driver added
aacu0: COMMAND 0xffffff8001fd08e8 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd0ac8 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd0ca8 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd0e88 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd1068 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd1248 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd1428 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd1608 TIMEOUT AFTER 40 SECONDS
aacu0: COMMAND 0xffffff8001fd17e8 TIMEOUT AFTER 40 SECONDS
.....

Then I installed 8.3, compiled driver and it started without any problem.=20
After that I cvsup-ed FreeBSD10 code (head, 28.05.2012), compiled it,=20
booted new kernel (set module=5Fpath/boot clang), compiled driver and it=20
kldloaded again without any error (raid6 2.8Tb disk read-write speed good, =

no errors).

Here is kernel 10 aacu driver dmesg lines:

aacu0: <Adaptec RAID Controller> mem 0xf8c00000-0xf8ffffff,
0xf8bbc000-0xf8bbc7ff,0xf8bbe000-0xf8bbe0ff irq 50 at device 0.0 on pci132
aacu0: Enable Raw I/O
aacu0: Enable 64-bit array
aacu0: New comm. interface type1 enabled
ioapic2: routing intpin 2 (PCI IRQ 50) to lapic 33 vector 49
aacu0: Adaptec 6805, aac driver 2.4.2-18668
aacu0: Supported Options=3D141f1d7c<WCACHE,DATA64,HOSTTIME,RAID50,WINDOW4GB=
,SOFTERR,SGMAP64,
ALARM,NONDASD,ADPTINFO,NEWCOMM,ARRAY64BIT,HEATSENSOR>
aacd0 on aacu0
aacd0: 2860022MB (5857325056 sectors)
GEOM: new disk aacd0
pci133: driver added
pci134: driver added
......

The problem exists only under 9.0-RELEASE. Interrupts doesn't work for this=
=20
device at all. Driver makes device initialization using sync requests and=20
then hungs on first async io waiting interrupt.

Driver interrupts install code looks good:

sc->aac=5Firq=5Frid =3D 0;
if ((sc->aac=5Firq =3D bus=5Falloc=5Fresource=5Fany(sc->aac=5Fdev, SYS=5FRE=
S=5FIRQ,
                                          &sc->aac=5Firq=5Frid,
                                          RF=5FSHAREABLE | RF=5FACTIVE)) =
=3D=3D NULL) {
                device=5Fprintf(sc->aac=5Fdev, "can't allocate interrupt\n"=
);
                return (EINVAL);
}

if (sc->flags & AAC=5FFLAGS=5FNEW=5FCOMM=5FTYPE1) {
    if (bus=5Fsetup=5Fintr(sc->aac=5Fdev, sc->aac=5Firq,
                       INTR=5FMPSAFE|INTR=5FTYPE=5FBIO, NULL,.
                       aac=5Fnew=5Fintr=5Ftype1, sc, &sc->aac=5Fintr)) {
        device=5Fprintf(sc->aac=5Fdev, "can't set up interrupt\n");
        return (EINVAL);
}

I added "panic" call at the beginning of interrupt handler=20
"aac=5Fnew=5Fintr=5Ftype1()" and found it never called during driver=20
initialization on 9.0. Is this 9.0-RELEASE bug or future ?

--=20
=E1=CC=C5=CB=D3=C1=CE=C4=D2 =F7. =FB=D5=D4=CB=CF <AVShutko@mail.khstu.ru>
=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120529135502.febc8178.AVShutko>