Thread (4 messages) 4 messages, 3 authors, 2004-08-09

Re: PATCH: IDE - do spin up for all platforms

From: Jeff Garzik <hidden>
Date: 2004-08-09 14:59:24

Alan Cox wrote:
quoted hunk ↗ jump to hunk
This was put in for PPC specifically and defined in the 2.4 tree to be
paranoid about breaking stuff. The actual wait for hwif spin up is however
perfectly correct for all drives. In the normal PC case the PC BIOS has done
this but with other embedded boxes and with things like LinuxBIOS it may not
have done. Thus it should always be done.
--- drivers/ide/ide-probe.c~	2004-08-09 15:36:13.109053400 +0100
+++ drivers/ide/ide-probe.c	2004-08-09 15:36:13.109053400 +0100
@@ -635,7 +635,6 @@
 	device_register(&hwif->gendev);
 }
 
-#ifdef CONFIG_PPC
 static int wait_hwif_ready(ide_hwif_t *hwif)
 {
 	int rc;
@@ -671,7 +670,6 @@
 	
 	return rc;
 }
-#endif
 
 /*
  * This routine only knows how to look for drive units 0 and 1
@@ -717,7 +715,6 @@
 
 	local_irq_set(flags);
 
-#ifdef CONFIG_PPC
 	/* This is needed on some PPCs and a bunch of BIOS-less embedded
 	 * platforms. Typical cases are:
 	 * 
@@ -739,7 +736,6 @@
 	 */
 	if (wait_hwif_ready(hwif))
 		printk(KERN_WARNING "%s: Wait for ready failed before probe !\n", hwif->name);
-#endif /* CONFIG_PPC */

It needs to check for "status != 0x7f" which is the standard "no device 
here" return status.

But worse than that, status can return 0xFF for "no hardware there", in 
which case this routine will hang the boot for 35 seconds.

Note also that libata code does this:
* wait 7 seconds
* printk("it's taking a long time, be patient")
* wait ~30 seconds

	Jeff

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help