Perhaps not that weird. From my experience, ALi DMA is sensitive to
some of "PIO timings". That is, if SRM hasn't initialized the chipset
properly (on Nautilus it has, BTW), DMA won't work. When you boot with
DMA disabled, driver has to set right PIO mode, so you can safely
enable DMA later.
Can you (and Jason) try this patch with CONFIG_IDEDMA_PCI_AUTO=y?
Ivan.
--- linux/drivers/ide/pci/alim15x3.c.orig Tue Apr 22 19:17:22 2003
+++ linux/drivers/ide/pci/alim15x3.c Tue May 27 17:42:17 2003
@@ -525,10 +525,14 @@ static int ali15x3_config_drive_for_dma(
drive->init_speed = 0;
+ /* Set reasonable PIO timings first - some of them are needed
+ for DMA as well. */
+ hwif->tuneproc(drive, 255);
+
if ((id->capability & 1) != 0 && drive->autodma) {
/* Consult the list of known "bad" drives */
if (hwif->ide_dma_bad_drive(drive))
- goto ata_pio;
+ goto no_dma_set;
if ((id->field_valid & 4) && (m5229_revision >= 0xC2)) {
if (id->dma_ultra & hwif->ultra_mask) {
/* Force if Capable UltraDMA */
@@ -550,11 +554,9 @@ try_dma_modes:
if (!config_chipset_for_dma(drive))
goto no_dma_set;
} else {
- goto ata_pio;
+ goto no_dma_set;
}
} else {
-ata_pio:
- hwif->tuneproc(drive, 255);
no_dma_set:
return hwif->ide_dma_off_quietly(drive);
}
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/