ATA DMA problems with recent -current

Nathan Whitehorn nwhitehorn at freebsd.org
Sun Oct 26 16:00:57 UTC 2008


Marco Trillo wrote:
> Hi,
> 
> On Sun, Oct 26, 2008 at 4:30 PM, Nathan Whitehorn
> <nwhitehorn at freebsd.org> wrote:
>>> Hi all,
>>>
>>> I just updated my -current kernel to today sources -- the previous
>>> kernel was from Oct 11. With the new kernel I'm getting ad0 ATA DMA
>>> timeouts, which get worse when I stress the drive.
>>>
>> The only thing that changed since 11 Oct was that I redid the PCI handling
>> by importing sparc64's architecture. This *should* have changed nothing,
>> since I just reshuffled some code, but apparently it didn't. One of the few
>> actual changes was that ata_kauai now attaches only to the first IRQ (39)
>> instead of both OF IRQs (39 and 1). However, it never used the second one,
>> so it should have changed nothing. Things to try:
>>
>> - Make ata_kauai add IRQ 1 to its resource list again, just like it
>> hardcodes 39.
>> - IRQ 1 is shared with the i2s controller. Try disabling it?
>>
>> I'm pretty confused about how it is that things have broken, though.
> 
> I removed the i2s driver, but got the same results.
> 
> However I think I have located the source of the problem.
> 
> I diffed the 'ident' output on both kernels and noticed something
> which seemed related:
> 
> -     $FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.157 2008/10/09 12:56:57 sos Exp $
> +     $FreeBSD: src/sys/dev/ata/ata-dma.c,v 1.158 2008/10/21 18:51:55 jhb Exp $
> 
> Then I reverted ata-dma.c to revision 1.157. It works! I get no more
> timeouts. Currently it's untarring the ports.tar.gz file quite
> happily!

Intriguing... that change was a typo fix. I guess we have to limit the 
maximum ATA DMA size for our controllers. I'll look around and commit a 
real fix later today.
-Nathan


More information about the freebsd-ppc mailing list