PATA disks/DVD not detected on ATI IXP 700 - cannot boot (dmesg attached)

Alexander Motin mav at FreeBSD.org
Mon Sep 28 18:46:18 UTC 2009


Dennis Chikin wrote:
>> Is it means that all works with this patch?
> 
> No visible ata-specific faults encountered after loading the kernel.
> 
>> Can you show dmesg from patched system?

> atapci0: <ATI (ID=43901002) AHCI controller> port
> 0xc000-0xc007,0xb000-0xb003,0xa000-0xa007,0x9000-0x9003,0x8000-0x800f
> mem 0xfe8ff800-0xfe8ffbff irq 22 at device 17.0 on pci0
> atapci0: Reserved 0x10 bytes for rid 0x20 type 4 at 0x8000
> atapci0: Reserved 0x400 bytes for rid 0x24 type 3 at 0xfe8ff800
> ioapic0: routing intpin 22 (PCI IRQ 22) to vector 50
> atapci0: [MPSAFE]
> atapci0: [ITHREAD]
> atapci0: AHCI Version 01.10 controller with 4 ports detected
> ata2: <ATA channel 0> on atapci0
> ata2: SATA connect time=0ms
> ata2: SIGNATURE: 00000101
> ata2: ahci_reset devices=0x1<ATA_MASTER>
> ata2: [MPSAFE]
> ata2: [ITHREAD]
> ata3: <ATA channel 1> on atapci0
> ata3: SATA connect status=00000000
> ata3: ahci_reset devices=0x0
> ata3: [MPSAFE]
> ata3: [ITHREAD]
> ata4: <ATA channel 2> on atapci0
> ata4: SATA connect status=00000000
> ata4: ahci_reset devices=0x0
> ata4: [MPSAFE]
> ata4: [ITHREAD]
> ata5: <ATA channel 3> on atapci0
> ata5: SATA connect status=00000000
> ata5: ahci_reset devices=0x0
> ata5: [MPSAFE]
> ata5: [ITHREAD]
> atapci1: <ATI IXP700 UDMA133 controller> port
> 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0xff00-0xff0f at device 20.1 on
> pci0
> atapci1: Reserved 0x10 bytes for rid 0x20 type 4 at 0xff00
> ata0: <ATA channel 0> on atapci1
> atapci1: Reserved 0x8 bytes for rid 0x10 type 4 at 0x1f0
> atapci1: Reserved 0x1 bytes for rid 0x14 type 4 at 0x3f6
> ata0: reset tp1 mask=03 ostat0=7f ostat1=7f
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat0=0x7f err=0xff lsb=0xff msb=0xff
> ata0: stat1=0x7f err=0xff lsb=0xff msb=0xff
> ata0: reset tp2 stat0=ff stat1=ff devices=0x0
> ioapic0: routing intpin 14 (ISA IRQ 14) to vector 55
> ata0: [MPSAFE]
> ata0: [ITHREAD]
> ata1: <ATA channel 1> on atapci1
> atapci1: Reserved 0x8 bytes for rid 0x18 type 4 at 0x170
> atapci1: Reserved 0x1 bytes for rid 0x1c type 4 at 0x376
> ata1: reset tp1 mask=03 ostat0=50 ostat1=50
> ata1: stat0=0x50 err=0x01 lsb=0x00 msb=0x00
> ata1: stat1=0x00 err=0x01 lsb=0x14 msb=0xeb
> ata1: reset tp2 stat0=50 stat1=00 devices=0x9<ATAPI_SLAVE,ATA_MASTER>

Here we can see detected: 4 (not 6!) SATA channels on AHCI controller,
one PATA channel and 2 SATA channels in legacy emulation (why?).
Actually, the same happens if I comment out all that device class magic.
Looks like the only thing really required to fix problem with two lost
channels is this part of patch:

-    /* IXP600 & IXP700 only have 1 PATA channel */
-    if ((ctlr->chip->chipid == ATA_ATI_IXP600) ||
-       (ctlr->chip->chipid == ATA_ATI_IXP700))
+    /* IXP600 only have 1 PATA channel */
+    if (ctlr->chip->chipid == ATA_ATI_IXP600)

Looks like part of changing device class just not working. Today I have
bought IXP700 based board and can acknowledge that the same situation I
can see with recent HEAD. `pciconf -l` reports to me original PATA
device class and only 4 channels reported by AHCI.

So jkim@, could you please comment, how should it really work and why it
doesn't?

PS: I have tried to disable all that ATI-specific code and found that
both legacy PCI ATA and AHCI drivers looks like working fine with
IXP700. Do we really need AHCI forcing for IXP700?

-- 
Alexander Motin


More information about the freebsd-stable mailing list