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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]