Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsHD.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsHD.cpp	(revision 23853)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxVMSettingsHD.cpp	(revision 23854)
@@ -1781,4 +1781,5 @@
             CStorageController ctr = mMachine.AddStorageController (ctrName, ctrBusType);
             ctr.SetControllerType (ctrType);
+            int maxUsedPort = -1;
             for (int j = 0; j < mStorageModel->rowCount (ctrIndex); ++ j)
             {
@@ -1791,4 +1792,12 @@
                 attachment.SetPassthrough (mStorageModel->data (attIndex, StorageModel::R_AttIsHostDrive).toBool() &&
                                            mStorageModel->data (attIndex, StorageModel::R_AttIsPassthrough).toBool());
+                maxUsedPort = attStorageSlot.port > maxUsedPort ? attStorageSlot.port : maxUsedPort;
+            }
+            if (ctrBusType == KStorageBus_SATA)
+            {
+                ULONG sataPortsCount = maxUsedPort + 1;
+                sataPortsCount = qMax (sataPortsCount, ctr.GetMinPortCount());
+                sataPortsCount = qMin (sataPortsCount, ctr.GetMaxPortCount());
+                ctr.SetPortCount (sataPortsCount);
             }
         }
