kern/64637: ata1-slave: stat=0x01 err=0x00 lsb=0x00 msb=0x00 <- repeats for exactly 30 seconds during boot when no slave iswired

Paul Seniura pdseniura at techie.com
Tue Apr 27 12:16:06 PDT 2004



With the recent patches to ata-lowlevel.c (v1.33 at this writing), verbose boot is showing this in the dmesg:
[...]
atapci0: <Intel PIIX4 UDMA33 controller> port 0xfff0-0xffff,0x376,0x170-0x177,0x3f6,0x1f0-0x1f7 at device 2.1 on pci0
atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0xfff0
atapci0: Reserved 0x8 bytes for rid 0x10 type 4 at 0x1f0
atapci0: Reserved 0x1 bytes for rid 0x14 type 4 at 0x3f6
ata0: reset tp1 mask=03 ostat0=50 ostat1=00
ata0-master: stat=0x50 err=0x01 lsb=0x00 msb=0x00
ata0-slave:  stat=0x00 err=0x01 lsb=0x00 msb=0x00
ata0: reset tp2 mask=03 stat0=50 stat1=00 devices=0x1<ATA_MASTER>
ata0: at 0x1f0 irq 14 on atapci0
ata0: [MPSAFE]
atapci0: Reserved 0x8 bytes for rid 0x18 type 4 at 0x170
atapci0: Reserved 0x1 bytes for rid 0x1c type 4 at 0x376
ata1: reset tp1 mask=03 ostat0=50 ostat1=00
ata1-master: stat=0x00 err=0x01 lsb=0x14 msb=0xeb  <-- Magic Numbers for ATAPI device
ata1-slave:  stat=0x01 err=0x00 lsb=0x00 msb=0x00 \ <----------/////////////////
[...^v^v^v^ repeats 30 seconds' worth ^v^v^v^...] < <---------<<<  looping  <<<
ata1-slave:  stat=0x01 err=0x00 lsb=0x00 msb=0x00 / <----------\\\\\\\\\\\\\\\\\
ata1: reset tp2 mask=01 stat0=00 stat1=81 devices=0x4<ATAPI_MASTER>
ata1: at 0x170 irq 15 on atapci0
ata1: [MPSAFE]
[...]


The 'atacontrol list' shows:
ATA channel 0:
    Master:  ad0 <IBM-DTTA-371010/T77IA73A> ATA/ATAPI revision 4
    Slave:       no device present
ATA channel 1:
    Master: acd0 <HL-DT-ST RW/DVD GCC-4120B/2.02> ATA/ATAPI revision 0
    Slave:       no device present


The 'atacontrol mode 0' shows:
Master = UDMA33
Slave  = BIOSPIO


The 'atacontrol mode 1' shows:
Master = WDMA2
Slave  = BIOSPIO


With this new info, we can see that we are getting the ATAPI_MAGIC_* numbers from the secondary channel (still connected only to the LG Combo as Master, no Slaves at all anywhere).
The code turns on 'ch->devices |= ATA_ATAPI_MASTER;' at this point and continues.
We see different stat1 values afterwards, when checking for slave on secondary.
It seems stat1 is not checked against ATA_S_ERROR at this point.
How can we do this properly so it'd work for everyone?

Also should I figure out why tp2 on primary channel ends up with mask=03, with no slaves at all anywhere?
Or is this a common assumption being made?

? ? ? ?


  --  thx, Paul Seniura.




More information about the freebsd-current mailing list