git: 9front

Download patch

ref: 00db0b96920f4f8a770bacff7ff554e02c8f0162
parent: ff938783a149a445fe8019cf5b31f4c49b8f0eef
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sat Feb 23 09:05:51 EST 2013

sdiahci: only wait for drives that are in the process of becoming ready when onlining, add *noahci option

--- a/sys/src/9/pc/sdiahci.c
+++ b/sys/src/9/pc/sdiahci.c
@@ -908,6 +908,7 @@
 
 	ilock(d);
 	switch(d->port->sstatus & Smask){
+	default:
 	case Smissing:
 		d->state = Dmissing;
 		break;
@@ -1497,7 +1498,7 @@
 	c = u->dev->ctlr;
 	d = c->drive[u->subno];
 
-	while(waitready(d) == 1)
+	while(d->state != Dmissing && waitready(d) == 1)
 		esleep(1);
 
 	dprint("%s: iaonline: %s\n", dnam(d), diskstates[d->state]);
@@ -2136,6 +2137,9 @@
 	if(done)
 		return nil;
 	done = 1;
+
+	if(getconf("*noahci") != nil)
+		return nil;
 
 	if(getconf("*ahcidebug") != nil){
 		debug = 1;
--