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