diff -ur linux-2.4.19-pre10/drivers/ide/ide-disk.c linux-2.4.19-pre/drivers/ide/ide-disk.c
--- linux-2.4.19-pre10/drivers/ide/ide-disk.c	Wed Jun 12 09:51:12 2002
+++ linux-2.4.19-pre/drivers/ide/ide-disk.c	Wed Jun 12 00:30:18 2002
@@ -770,6 +770,8 @@
 	ide_task_t args;
 	unsigned long addr = 0;
 
+	if (!drive->id)
+		return 0;
 	if (!(drive->id->command_set_1 & 0x0400) &&
 	    !(drive->id->cfs_enable_2 & 0x0100))
 		return addr;
@@ -927,6 +929,11 @@
 	drive->capacity48 = 0;
 	drive->select.b.lba = 0;
 
+	if (!id) {
+		drive->capacity = capacity;
+		return;
+	}
+	
 	if (id->cfs_enable_2 & 0x0400) {
 		capacity_2 = id->lba_capacity_2;
 		drive->cyl = (unsigned int) capacity_2 / (drive->head * drive->sect);
@@ -988,7 +995,7 @@
 
 static unsigned long idedisk_capacity (ide_drive_t *drive)
 {
-	if (drive->id->cfs_enable_2 & 0x0400)
+	if (drive->id && (drive->id->cfs_enable_2 & 0x0400))
 		return (drive->capacity48 - drive->sect0);
 	return (drive->capacity - drive->sect0);
 }
@@ -1419,7 +1426,7 @@
 
 static int idedisk_cleanup (ide_drive_t *drive)
 {
-	if ((drive->id->cfs_enable_2 & 0x3000) && drive->wcache)
+	if (drive->id && (drive->id->cfs_enable_2 & 0x3000) && drive->wcache)
 		if (do_idedisk_flushcache(drive))
 			printk (KERN_INFO "%s: Write Cache FAILED Flushing!\n",
 				drive->name);
