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

Jung-uk Kim jkim at
Tue Sep 29 22:37:01 UTC 2009

On Monday 28 September 2009 02:21 pm, Alexander Motin wrote:
> 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?

My patch fixed two things: a) "combined mode" and b) the above fix.  
The combined mode is very unusual.  When combined mode is turned on 
from BIOS, two SATA ports appear as legacy ATA device.  Depending on 
the configurations, device ID changes. :-( To enable this feature, 
some BIOSes allow flexible (and yet confusing) combinations like 

Also, almost all SB700 BIOSes out there have broken ACPI DSDT which do 
not set these bits properly.  Thus, some ports disappear if we don't 
force setting the subclass and progif.  Note it should be *partially* 
worked around by the latest ACPICA on -CURRENT, though.

> 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?

It enables all six SATA ports as SATA and one PATA channel as PATA in 
the combined mode by forcing the mode.  It is not absolutely 
necessary but it is better than without it, IMHO. :-)

Jung-uk Kim

More information about the freebsd-stable mailing list