ATA probes adapters switched off in BIOS "Integrated Peripherals"?

Matthias Andree ma at dt.e-technik.uni-dortmund.de
Mon Sep 22 02:31:16 PDT 2003


Hi,

after I had a kernel with broken atapicam that wouldn't boot, I tried
disabling the secondary onboard channel of my main board (AMI BIOS, VIA
KT133 chip set).

The BIOS thought "oh well, we don't need ATA1, so we have IRQ 15 free,
let's route xl0 and xl2 there". So far so good.

ATAng happily probed and registered ata1 on the VIA chip:

Sep 22 00:36:05 merlin kernel: atapci0: <VIA 82C686A UDMA66 controller> port 0xffa0-0xffaf at device 7.1 on pci0
Sep 22 00:36:05 merlin kernel: ata0: reset tp1 mask=03 ostat0=50 ostat1=50
Sep 22 00:36:05 merlin kernel: ata0-master: stat=0xd0 err=0xd0 lsb=0xd0 msb=0xd0
Sep 22 00:36:05 merlin kernel: ata0-slave:  stat=0x80 err=0x80 lsb=0x80 msb=0x80
Sep 22 00:36:05 merlin kernel: ata0-master: stat=0x50 err=0x01 lsb=0x00 msb=0x00
Sep 22 00:36:05 merlin kernel: ata0-slave:  stat=0x50 err=0x01 lsb=0x00 msb=0x00
Sep 22 00:36:05 merlin kernel: ata0: reset tp2 mask=03 stat0=50 stat1=50 devices=0x3<ATA_SLAVE,ATA_MASTER>
(that's fine, I have two hard disk drives)
Sep 22 00:36:05 merlin kernel: ata0: at 0x1f0 irq 14 on atapci0
Sep 22 00:36:05 merlin kernel: ata0: [MPSAFE]
Sep 22 00:36:05 merlin kernel: ata1: at 0x170 irq 15 on atapci0
Sep 22 00:36:05 merlin kernel: ata1: [MPSAFE]
...
Sep 22 00:36:05 merlin kernel: xl0: <3Com 3c900-COMBO Etherlink XL> port 0xb400-0xb43f irq 15 at device 9.0 on pci0
...
Sep 22 00:36:05 merlin kernel: xl1: <3Com 3c905-TX Fast Etherlink XL> port 0xc000-0xc03f irq 9 at device 12.0 on pci0
Sep 22 00:36:05 merlin kernel: xl2: <3Com 3c905-TX Fast Etherlink XL> port 0xc400-0xc43f irq 15 at device 13.0 on pci0
...

and later hundreds of:
Sep 22 00:36:05 merlin kernel: ata1: spurious interrupt - status=0xff error=0xff
Sep 22 00:36:05 merlin last message repeated 3 times
...
Sep 22 00:36:42 merlin kernel: ata1: spurious interrupt - status=0xff error=0xff
Sep 22 00:36:48 merlin last message repeated 20 times

However, acd0 which is the Secondary Master was _not_ detected, as I
expected.

For some reason ata seems to have missed it was running in "Primary
Only" mode and was complaining about spurious interrupts that were
xl0/xl2's.

Can ata(4) detect if ata1 is switched off?

Why does ata think the interrupt was for itself? Doesn't it need to
probe the IDE chip registers before making such claims?

Is ata ready to share the IRQ with some other card? It should (and I
believe it actually does), since my Promise chip (not shown) shares the
IRQ with xl1, bttv and the two USB root devices.


Oh, did I mention the kernel message ("dmesg") buffer is *WAY* too small
for "boot -v"?

Can we please 8-fold the buffer size for boot -v and print a warning
that boot -v bumped the message buffer size (so as to avoid heisenbugs
that are gone in -v mode)?

-- 
Matthias Andree

Encrypt your mail: my GnuPG key ID is 0x052E7D95


More information about the freebsd-current mailing list