[coreboot-gerrit] Patch set updated for coreboot: fe4b23b libpayload: ahci: Increase timeout for signature reading

Nico Huber (nico.huber@secunet.com) gerrit at coreboot.org
Tue Jun 18 15:50:49 CEST 2013


Nico Huber (nico.huber at secunet.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3493

-gerrit

commit fe4b23b4727d41d5cacb4bb6b2af7d5ffe1cb9c2
Author: Nico Huber <nico.huber at secunet.com>
Date:   Mon Jun 17 17:42:35 2013 +0200

    libpayload: ahci: Increase timeout for signature reading
    
    We can't read the drives signature before it's ready, i.e. spun up.
    So set the timeout to the standard 30s. Also put a notice on the
    console, so the user knows why the signature reading failed.
    
    Change-Id: I2148258f9b0eb950b71544dafd95776ae70afac8
    Signed-off-by: Nico Huber <nico.huber at secunet.com>
---
 payloads/libpayload/drivers/storage/ahci.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/payloads/libpayload/drivers/storage/ahci.c b/payloads/libpayload/drivers/storage/ahci.c
index 2b33b59..ec4db4c 100644
--- a/payloads/libpayload/drivers/storage/ahci.c
+++ b/payloads/libpayload/drivers/storage/ahci.c
@@ -406,11 +406,19 @@ static int ahci_dev_init(hba_ctrl_t *const ctrl,
 	dev->cmdtable = cmdtable;
 	dev->rcvd_fis = rcvd_fis;
 
-	/* Wait for D2H Register FIS with device' signature. */
-	int timeout = 200; /* Time out after 200 * 10ms == 2s. */
+	/*
+	 * Wait for D2H Register FIS with device' signature.
+	 * The drive has to spin up here, so wait up to 30s.
+	 */
+	const int timeout_s = 30; /* Time out after 30s. */
+	int timeout = timeout_s * 100;
 	while ((port->taskfile_data & HBA_PxTFD_BSY) && timeout--)
 		mdelay(10);
 
+	if (port->taskfile_data & HBA_PxTFD_BSY)
+		printf("ahci: Timed out after %d seconds "
+		       "of waiting for device to spin up.\n", timeout_s);
+
 	/* Initialize device or fall through to clean up. */
 	switch (port->signature) {
 	case HBA_PxSIG_ATA:



More information about the coreboot-gerrit mailing list