Index: /trunk/src/VBox/Devices/PC/BIOS/scsi.c
===================================================================
--- /trunk/src/VBox/Devices/PC/BIOS/scsi.c	(revision 43659)
+++ /trunk/src/VBox/Devices/PC/BIOS/scsi.c	(revision 43660)
@@ -29,5 +29,6 @@
 #endif
 
-#define VBSCSI_BUSY (1 << 0)
+#define VBSCSI_BUSY     (1 << 0)
+#define VBSCSI_ERROR    (1 << 1)
 
 /* The I/O port of the BusLogic SCSI adapter. */
@@ -43,4 +44,5 @@
 #define VBSCSI_REGISTER_IDENTIFY 2
 #define VBSCSI_REGISTER_RESET    3
+#define VBSCSI_REGISTER_DEVSTAT  3
 
 #define VBSCSI_MAX_DEVICES 16 /* Maximum number of devices a SCSI device can have. */
@@ -295,4 +297,13 @@
         status = inb(io_base + VBSCSI_REGISTER_STATUS);
     while (status & VBSCSI_BUSY);
+
+    /* If any error occurred, inform the caller and don't bother reading the data. */
+    if (status & VBSCSI_ERROR) {
+        outb(io_base + VBSCSI_REGISTER_RESET, 0);
+
+        status = inb(io_base + VBSCSI_REGISTER_DEVSTAT);
+        DBG_SCSI("%s: read failed, device status %02X\n", __func__, status);
+        return 3;
+    }
 
     /* Transfer the data read from the device. */
