Index: /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp	(revision 30946)
+++ /trunk/src/VBox/Devices/Storage/DevLsiLogicSCSI.cpp	(revision 30947)
@@ -30,4 +30,5 @@
 # include <iprt/param.h>
 # include <iprt/uuid.h>
+# include <iprt/time.h>
 #endif
 
@@ -44,4 +45,7 @@
  * include the device config part. */
 #define LSILOGIC_SAVED_STATE_VERSION_VBOX_30  1
+
+/** Maximum number of entries in the release log. */
+#define MAX_REL_LOG_ERRORS 1024
 
 /**
@@ -1897,21 +1901,4 @@
     pTaskState->fBIOS = false;
 
-    uint32_t uChainOffset = pTaskState->GuestRequest.SCSIIO.u8ChainOffset;
-
-    if (uChainOffset)
-        uChainOffset = uChainOffset * sizeof(uint32_t) - sizeof(MptSCSIIORequest);
-
-    /* Create Scatter gather list. */
-    rc = lsilogicScatterGatherListCreate(pLsiLogic, pTaskState,
-                                         pTaskState->GCPhysMessageFrameAddr + sizeof(MptSCSIIORequest),
-                                         uChainOffset);
-    AssertRC(rc);
-
-#if 0
-    /* Map sense buffer. */
-    rc = lsilogicMapGCSenseBufferIntoR3(pLsiLogic, pTaskState);
-    AssertRC(rc);
-#endif
-
     if (RT_LIKELY(   (pTaskState->GuestRequest.SCSIIO.u8TargetID < pLsiLogic->cDeviceStates)
                   && (pTaskState->GuestRequest.SCSIIO.u8Bus == 0)))
@@ -1922,4 +1909,23 @@
         if (pTargetDevice->pDrvBase)
         {
+            uint32_t uChainOffset;
+
+            /* Create Scatter gather list. */
+            uChainOffset = pTaskState->GuestRequest.SCSIIO.u8ChainOffset;
+
+            if (uChainOffset)
+                uChainOffset = uChainOffset * sizeof(uint32_t) - sizeof(MptSCSIIORequest);
+
+            rc = lsilogicScatterGatherListCreate(pLsiLogic, pTaskState,
+                                                 pTaskState->GCPhysMessageFrameAddr + sizeof(MptSCSIIORequest),
+                                                 uChainOffset);
+            AssertRC(rc);
+
+#if 0
+            /* Map sense buffer. */
+            rc = lsilogicMapGCSenseBufferIntoR3(pLsiLogic, pTaskState);
+            AssertRC(rc);
+#endif
+
             /* Setup the SCSI request. */
             pTaskState->pTargetDevice                        = pTargetDevice;
@@ -1963,4 +1969,18 @@
         else
             pTaskState->IOCReply.SCSIIOError.u16IOCStatus = MPT_SCSI_IO_ERROR_IOCSTATUS_INVALID_TARGETID;
+    }
+
+    static int g_cLogged = 0;
+
+    if (g_cLogged++ < MAX_REL_LOG_ERRORS)
+    {
+        LogRel(("LsiLogic#%d: %d/%d (Bus/Target) doesn't exist\n", pLsiLogic->CTX_SUFF(pDevIns)->iInstance,
+                pTaskState->GuestRequest.SCSIIO.u8TargetID, pTaskState->GuestRequest.SCSIIO.u8Bus));
+        /* Log the CDB too  */
+        LogRel(("LsiLogic#%d: Guest issued CDB {%#x",
+                pLsiLogic->CTX_SUFF(pDevIns)->iInstance, pTaskState->GuestRequest.SCSIIO.au8CDB[0]));
+        for (unsigned i = 1; i < pTaskState->GuestRequest.SCSIIO.u8CDBLength; i++)
+            LogRel((", %#x", pTaskState->GuestRequest.SCSIIO.au8CDB[i]));
+        LogRel(("}\n"));
     }
 
@@ -2835,4 +2855,6 @@
                 if (pConfigurationReq->SimpleSGElement.f64BitAddress)
                     GCPhysAddrPageBuffer |= (uint64_t)pConfigurationReq->SimpleSGElement.u32DataBufferAddressHigh << 32;
+
+                LogFlow(("cbBuffer=%u cbPage=%u\n", cbBuffer, cbPage));
 
                 PDMDevHlpPhysRead(pLsiLogic->CTX_SUFF(pDevIns), GCPhysAddrPageBuffer, pbPageData,
