Re: [BUG] PDC20268 crashing during DMA setup on stock Debian 2.6.12-1-powerpc

From: Kyle Moffett
Date: Sun Nov 20 2005 - 13:29:40 EST


On Oct 19, 2005, at 21:36:44, Benjamin Herrenschmidt wrote:

Kyle Moffett wrote:

BusMaster-DMA definitely should be enabled on that card. After a lot of looking through icky IDE code, I've determined that the reason for the crash is that if there is a "mate", or another IDE bus on the same card, then hwif->dma_master is set to hwif->mate- >dma_base on the secondary channel. Since DMA explicitly wasn't enabled on the primary channel, hwif->dma_master on the secondary is 0 even though dma is enabled, and therefore we hit that BUG().


This is verified by adding printks to the code. This is exactly where it crashes.


Therefore it seems that the only issue is ide_get_or_set_dma_base is returning 0 when it should return a valid DMA base. In that function, the only ways that function can even theoretically return 0 without printing any weird error messages is "if (hwif- >mmio)" or "if (hwif->mate && hwif->mate->dma_base)". The latter can't happen before hwif->mate is set up (since the problem is while initializing the primary). Could hwif->mmio be nonzero somehow? The only drivers that seem to set it are pci/sgiioc4, pci/ siimage, ppc/pmac, and a couple misc arch drivers.


With heavy printk debugging, I have identified that the hwif->mmio is getting set to 2 somewhere (even though the PDC driver never touches it). I added an extra line in the PDC init code to explicitly zero hwif->mmio, but I get the same result, so something else is mashing on the PDC hwif.


Maybe there is some fighting going on between ppc/pmac.c and that driver over the hwif's and you end up with mmio inadvertently set ?


This is the only possibility that I can think of, but I'm having a hard time getting enough lines of pre-BUG output. Is there any way to turn off the BUG() lines and just show the printks before that point?

Cheers,
Kyle Moffett


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/