--- ../tmp/linux-2.6.0-test2/drivers/ide/ide-probe.c 2003-07-27 22:33:36.000000000 +0400 +++ linux-2.6.0-test2-smp/drivers/ide/ide-probe.c 2003-08-03 15:17:10.000000000 +0400 @@ -1134,6 +1134,8 @@ static int ata_lock(dev_t dev, void *dat return 0; } +extern ide_driver_t idedefault_driver; + struct kobject *ata_probe(dev_t dev, int *part, void *data) { ide_hwif_t *hwif = data; @@ -1141,7 +1143,7 @@ struct kobject *ata_probe(dev_t dev, int ide_drive_t *drive = &hwif->drives[unit]; if (!drive->present) return NULL; - if (!drive->driver) { + if (drive->driver == &idedefault_driver) { if (drive->media == ide_disk) (void) request_module("ide-disk"); if (drive->scsi) @@ -1153,7 +1155,7 @@ struct kobject *ata_probe(dev_t dev, int if (drive->media == ide_floppy) (void) request_module("ide-floppy"); } - if (!drive->driver) + if (drive->driver == &idedefault_driver) return NULL; *part &= (1 << PARTN_BITS) - 1; return get_disk(drive->disk);