Index: /trunk/src/VBox/Devices/Storage/DevAHCI.cpp
===================================================================
--- /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 42205)
+++ /trunk/src/VBox/Devices/Storage/DevAHCI.cpp	(revision 42206)
@@ -54,7 +54,6 @@
 # include <iprt/time.h>
 #endif
-
+#include "PIIX3ATABmDma.h"
 #include "ide.h"
-#include "ATAController.h"
 #include "VBoxDD.h"
 
@@ -82,4 +81,5 @@
 #define ATA_CTL_SAVED_STATE_VERSION_WITHOUT_FULL_SENSE 1
 #define ATA_CTL_SAVED_STATE_VERSION_WITHOUT_EVENT_STATUS 2
+#define MAX_LOG_REL_ERRORS 1024
 /**
  * Maximum number of sectors to transfer in a READ/WRITE MULTIPLE request.
@@ -650,7 +650,4 @@
     /** Register structure per port */
     AHCIPort                        ahciPort[AHCI_MAX_NR_PORTS_IMPL];
-
-    /** Needed values for the emulated ide channels. */
-    AHCIATACONTROLLER               aCts[2];
 
     /** The critical section. */
@@ -6960,5 +6957,5 @@
         if (uVersion <= AHCI_SAVED_STATE_VERSION_IDE_EMULATION)
         {
-            for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
+            for (uint32_t i = 0; i < 2; i++)
             {
                 rc = ahciR3LoadLegacyEmulationState(pSSM);
@@ -7468,19 +7465,4 @@
             AssertMsgFailed(("%s: Failed to destroy the event semaphore rc=%Rrc.\n", __FUNCTION__, rc));
     }
-
-    /* Check if the changed port uses IDE emulation. */
-    bool fMaster = false;
-    PAHCIATACONTROLLER pCtl = NULL;
-
-    for (unsigned i = 0; i < RT_ELEMENTS(pAhci->aCts); i++)
-        for (unsigned j = 0; j < RT_ELEMENTS(pAhci->aCts[0].aIfs); j++)
-        {
-            PAHCIATACONTROLLER pTmp = &pAhci->aCts[i];
-            if (pTmp->aIfs[j].iLUN == iLUN)
-            {
-                pCtl = pTmp;
-                fMaster = j == 0 ? true : false;
-            }
-        }
 
     if (pAhciPort->fATAPI)
@@ -7558,18 +7540,4 @@
     else
     {
-        /* Check if the changed port uses IDE emulation. */
-        bool fMaster = false;
-        PAHCIATACONTROLLER pCtl = NULL;
-
-        for (unsigned i = 0; i < RT_ELEMENTS(pAhci->aCts); i++)
-            for (unsigned j = 0; j < RT_ELEMENTS(pAhci->aCts[0].aIfs); j++)
-            {
-                PAHCIATACONTROLLER pTmp = &pAhci->aCts[i];
-                if (pTmp->aIfs[j].iLUN == iLUN)
-                {
-                    pCtl = pTmp;
-                    fMaster = j == 0 ? true : false;
-                }
-            }
         char szName[24];
         RTStrPrintf(szName, sizeof(szName), "Port%d", iLUN);
Index: /trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp
===================================================================
--- /trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp	(revision 42205)
+++ /trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp	(revision 42206)
@@ -262,6 +262,4 @@
     CHECK_MEMBER_ALIGNMENT(AHCI, lock, 8);
     CHECK_MEMBER_ALIGNMENT(AHCIPort, StatDMA, 8);
-    CHECK_MEMBER_ALIGNMENT(AHCIATACONTROLLER, lock, 8);
-    CHECK_MEMBER_ALIGNMENT(AHCIATACONTROLLER, StatAsyncOps, 8);
 #ifdef VBOX_WITH_STATISTICS
     CHECK_MEMBER_ALIGNMENT(APICDeviceInfo, StatMMIOReadGC, 8);
Index: /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp
===================================================================
--- /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp	(revision 42205)
+++ /trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp	(revision 42206)
@@ -1116,132 +1116,4 @@
 #ifdef VBOX_WITH_AHCI
     /* Storage/ATAController.h */
-    GEN_CHECK_SIZE(AHCIATADevState);
-    GEN_CHECK_OFF(AHCIATADevState, fLBA48);
-    GEN_CHECK_OFF(AHCIATADevState, fATAPI);
-    GEN_CHECK_OFF(AHCIATADevState, fIrqPending);
-    GEN_CHECK_OFF(AHCIATADevState, cMultSectors);
-    GEN_CHECK_OFF(AHCIATADevState, PCHSGeometry.cCylinders);
-    GEN_CHECK_OFF(AHCIATADevState, PCHSGeometry.cHeads);
-    GEN_CHECK_OFF(AHCIATADevState, PCHSGeometry.cSectors);
-    GEN_CHECK_OFF(AHCIATADevState, cSectorsPerIRQ);
-    GEN_CHECK_OFF(AHCIATADevState, cTotalSectors);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegFeature);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegFeatureHOB);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegError);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegNSector);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegNSectorHOB);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegSector);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegSectorHOB);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegLCyl);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegLCylHOB);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegHCyl);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegHCylHOB);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegSelect);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegStatus);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegCommand);
-    GEN_CHECK_OFF(AHCIATADevState, uATARegDevCtl);
-    GEN_CHECK_OFF(AHCIATADevState, uATATransferMode);
-    GEN_CHECK_OFF(AHCIATADevState, uTxDir);
-    GEN_CHECK_OFF(AHCIATADevState, iBeginTransfer);
-    GEN_CHECK_OFF(AHCIATADevState, iSourceSink);
-    GEN_CHECK_OFF(AHCIATADevState, fDMA);
-    GEN_CHECK_OFF(AHCIATADevState, fATAPITransfer);
-    GEN_CHECK_OFF(AHCIATADevState, cbTotalTransfer);
-    GEN_CHECK_OFF(AHCIATADevState, cbElementaryTransfer);
-    GEN_CHECK_OFF(AHCIATADevState, iIOBufferCur);
-    GEN_CHECK_OFF(AHCIATADevState, iIOBufferEnd);
-    GEN_CHECK_OFF(AHCIATADevState, iIOBufferPIODataStart);
-    GEN_CHECK_OFF(AHCIATADevState, iIOBufferPIODataEnd);
-    GEN_CHECK_OFF(AHCIATADevState, iATAPILBA);
-    GEN_CHECK_OFF(AHCIATADevState, cbATAPISector);
-    GEN_CHECK_OFF(AHCIATADevState, aATAPICmd);
-    GEN_CHECK_OFF(AHCIATADevState, aATAPICmd[ATAPI_PACKET_SIZE - 1]);
-    GEN_CHECK_OFF(AHCIATADevState, abATAPISense);
-    GEN_CHECK_OFF(AHCIATADevState, abATAPISense[ATAPI_SENSE_SIZE - 1]);
-    GEN_CHECK_OFF(AHCIATADevState, cNotifiedMediaChange);
-    GEN_CHECK_OFF(AHCIATADevState, MediaEventStatus);
-    GEN_CHECK_OFF(AHCIATADevState, pLed);
-    GEN_CHECK_OFF(AHCIATADevState, cbIOBuffer);
-    GEN_CHECK_OFF(AHCIATADevState, pbIOBufferR3);
-    GEN_CHECK_OFF(AHCIATADevState, pbIOBufferR0);
-    GEN_CHECK_OFF(AHCIATADevState, pbIOBufferRC);
-    GEN_CHECK_OFF(AHCIATADevState, StatATADMA);
-    GEN_CHECK_OFF(AHCIATADevState, StatATAPIO);
-    GEN_CHECK_OFF(AHCIATADevState, StatATAPIDMA);
-    GEN_CHECK_OFF(AHCIATADevState, StatATAPIPIO);
-    GEN_CHECK_OFF(AHCIATADevState, StatReads);
-    GEN_CHECK_OFF(AHCIATADevState, pStatBytesRead);
-    GEN_CHECK_OFF(AHCIATADevState, StatWrites);
-    GEN_CHECK_OFF(AHCIATADevState, pStatBytesWritten);
-    GEN_CHECK_OFF(AHCIATADevState, StatFlushes);
-    GEN_CHECK_OFF(AHCIATADevState, fATAPIPassthrough);
-    GEN_CHECK_OFF(AHCIATADevState, cErrors);
-    GEN_CHECK_OFF(AHCIATADevState, pDrvBase);
-    GEN_CHECK_OFF(AHCIATADevState, pDrvBlock);
-    GEN_CHECK_OFF(AHCIATADevState, pDrvBlockBios);
-    GEN_CHECK_OFF(AHCIATADevState, pDrvMount);
-    GEN_CHECK_OFF(AHCIATADevState, IBase);
-    GEN_CHECK_OFF(AHCIATADevState, IPort);
-    GEN_CHECK_OFF(AHCIATADevState, IMountNotify);
-    GEN_CHECK_OFF(AHCIATADevState, iLUN);
-    GEN_CHECK_OFF(AHCIATADevState, pDevInsR3);
-    GEN_CHECK_OFF(AHCIATADevState, pDevInsR0);
-    GEN_CHECK_OFF(AHCIATADevState, pDevInsRC);
-    GEN_CHECK_OFF(AHCIATADevState, pControllerR3);
-    GEN_CHECK_OFF(AHCIATADevState, pControllerR0);
-    GEN_CHECK_OFF(AHCIATADevState, pControllerRC);
-    GEN_CHECK_SIZE(AHCIATATransferRequest);
-    GEN_CHECK_OFF(AHCIATATransferRequest, iIf);
-    GEN_CHECK_OFF(AHCIATATransferRequest, iBeginTransfer);
-    GEN_CHECK_OFF(AHCIATATransferRequest, iSourceSink);
-    GEN_CHECK_OFF(AHCIATATransferRequest, cbTotalTransfer);
-    GEN_CHECK_OFF(AHCIATATransferRequest, uTxDir);
-    GEN_CHECK_SIZE(AHCIATAAbortRequest);
-    GEN_CHECK_OFF(AHCIATAAbortRequest, iIf);
-    GEN_CHECK_OFF(AHCIATAAbortRequest, fResetDrive);
-    GEN_CHECK_SIZE(AHCIATARequest);
-    GEN_CHECK_OFF(AHCIATARequest, ReqType);
-    GEN_CHECK_OFF(AHCIATARequest, u);
-    GEN_CHECK_OFF(AHCIATARequest, u.t);
-    GEN_CHECK_OFF(AHCIATARequest, u.a);
-    GEN_CHECK_SIZE(AHCIATACONTROLLER);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, IOPortBase1);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, IOPortBase2);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, irq);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, lock);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, iSelectedIf);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, iAIOIf);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, uAsyncIOState);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fChainedTransfer);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fReset);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fRedo);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fRedoIdle);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fRedoDMALastDesc);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, BmDma);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pFirstDMADesc);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pLastDMADesc);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pRedoDMABuffer);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, cbRedoDMABuffer);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, aIfs);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, aIfs[1]);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pDevInsR3);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pDevInsR0);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, pDevInsRC);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fShutdown);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, AsyncIOThread);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, AsyncIOSem);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, aAsyncIORequests[4]);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, AsyncIOReqHead);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, AsyncIOReqTail);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, AsyncIORequestMutex);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, SuspendIOSem);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, DelayIRQMillies);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, fSignalIdle);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatAsyncOps);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatAsyncMinWait);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatAsyncMaxWait);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatAsyncTimeUS);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatAsyncTime);
-    GEN_CHECK_OFF(AHCIATACONTROLLER, StatLockWait);
 
     /* Storage/DevAHCI.cpp */
@@ -1363,6 +1235,4 @@
     GEN_CHECK_OFF(AHCI, ahciPort);
     GEN_CHECK_OFF(AHCI, ahciPort[AHCI_MAX_NR_PORTS_IMPL-1]);
-    GEN_CHECK_OFF(AHCI, aCts);
-    GEN_CHECK_OFF(AHCI, aCts[1]);
     GEN_CHECK_OFF(AHCI, lock);
     GEN_CHECK_OFF(AHCI, u32PortsInterrupted);
