--- ref/linux-2.4.20/drivers/ide/ide-probe.c 2002-11-28 17:53:13.000000000 -0600 +++ linux-2.4.20/drivers/ide/ide-probe.c 2003-03-30 00:22:43.000000000 -0600 @@ -166,6 +166,7 @@ * Prevent long system lockup probing later for non-existant * slave drive if the hwif is actually a flash memory card of some variety: */ +#if 0 if (drive_is_flashcard(drive)) { ide_drive_t *mate = &HWIF(drive)->drives[1^drive->select.b.unit]; if (!mate->ata_flash) { @@ -173,6 +174,7 @@ mate->noprobe = 1; } } +#endif drive->media = ide_disk; printk("ATA DISK drive\n"); QUIRK_LIST(HWIF(drive),drive); --- ref/linux-2.4.20/drivers/ide/ide-dma.c 2002-11-28 17:53:13.000000000 -0600 +++ linux-2.4.20/drivers/ide/ide-dma.c 2003-03-30 00:20:19.000000000 -0600 @@ -439,6 +439,8 @@ * For both Blacklisted and Whitelisted drives. * This is setup to be called as an extern for future support * to other special driver code. + * + * All flash cards in ATA mode should also be black listed */ int check_drive_lists (ide_drive_t *drive, int good_bad) { @@ -448,7 +450,7 @@ if (good_bad) { return in_drive_list(id, drive_whitelist); } else { - int blacklist = in_drive_list(id, drive_blacklist); + int blacklist = drive_is_flashcard(drive) || in_drive_list(id, drive_blacklist); if (blacklist) printk("%s: Disabling (U)DMA for %s\n", drive->name, id->model); return(blacklist); @@ -465,6 +467,12 @@ } } else { /* Consult the list of known "bad" drives */ + if( drive_is_flashcard(drive) ) { + printk("%s: Disabling (U)DMA for Flash %s\n", + drive->name, id->model); + return 1; + } + list = bad_dma_drives; while (*list) { if (!strcmp(*list++,id->model)) {