Call for testers: Apple ATA DMA
Maxim Sobolev
sobomax at FreeBSD.org
Mon Sep 22 23:06:07 UTC 2008
Marco Trillo wrote:
> Hi,
>
> On Tue, Sep 23, 2008 at 12:13 AM, Maxim Sobolev <sobomax at freebsd.org> wrote:
>>>> I was able to "fix" the problem by making ata_macio probe function
>>>> returning ENXIO always. My guess is that ATA chipset on this machine is
>>>> somehow accessible through two different buses (macio and pci), which
>>>> creates some weird conflicts, but I might be wrong. Hopefully you will have
>>>> better idea, I can provide any assistance needed to fix the issue properly.
>>>> See 342.png screenshot. Dmesg with hacked ata_macio is as follows:
>>> Interesting -- it looks like all the interrupts are arriving on the second
>>> (DBDMA) IRQ. Could you try setting USE_DBDMA_IRQ to 0 in ata_macio.c and
>>> re-enabling ata_macio? There is something funny with how these interrupts
>>> are triggered currently and they can set off interrupt storms like this.
>> I've done that, but it has not changed anything. I still see interrupt storm
>> on irq 12.
>
> Try deleting the USE_DBDMA_IRQ definition line from ata_macio.c
> instead of just defining it to 0, so the "ifdef USE_DBDMA_IRQ" stuff
> is not compiled.
Yes, you are right. There are few unused variables in such case, though:
cc1: warnings being treated as errors
../../../powerpc/powermac/ata_macio.c: In function 'ata_macio_attach':
../../../powerpc/powermac/ata_macio.c:206: warning: unused variable 'cookie'
../../../powerpc/powermac/ata_macio.c:205: warning: unused variable
'dbdma_irq'
../../../powerpc/powermac/ata_macio.c:204: warning: unused variable
'dbdma_irq_rid'
*** Error code 1
If I ifdef them the kernel compiles and when booted there interrupt
storm no longer happens.
ata0 mem 0x20000-0x20fff,0x8800-0x88ff irq 24,12 on macio0
ata0: [ITHREAD]
ata1: <Intrepid Kauai ATA Controller> mem 0xf5004000-0xf5007fff irq 39,1
at device 13.0 on pci2
ata1: [ITHREAD]
ad0: 38154MB <TOSHIBA MK4025GAS KA100P> at ata1-master UDMA100
acd0: DVDR <MATSHITACD-RW CW-8123/CAD4> at ata1-slave UDMA33
Just curious, what's the purpose of that ata0? Is it real device or some
compatibility shim?
-Maxim
More information about the freebsd-ppc
mailing list