shithub: riscv

Download patch

ref: 5c4f2f9d35f5c55372b0e1fc32d1a55c605edb4f
parent: 3a79bf2ae6f780e605dfbc9ee213136aedff6673
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;
--