Index: /trunk/src/VBox/Main/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/MachineImpl.cpp	(revision 31300)
+++ /trunk/src/VBox/Main/MachineImpl.cpp	(revision 31301)
@@ -3477,5 +3477,5 @@
     ComObjPtr<MediumAttachment> attachment;
     attachment.createObject();
-    rc = attachment->init(this, medium, aControllerName, aControllerPort, aDevice, aType, indirect);
+    rc = attachment->init(this, medium, aControllerName, aControllerPort, aDevice, aType, indirect, 0 /* No bandwidth limit */);
     if (FAILED(rc)) return rc;
 
@@ -7165,5 +7165,6 @@
                                dev.lDevice,
                                dev.deviceType,
-                               dev.fPassThrough);
+                               dev.fPassThrough,
+                               dev.ulBandwidthLimit);
         if (FAILED(rc)) break;
 
@@ -8364,5 +8365,6 @@
                                   pAtt->getDevice(),
                                   DeviceType_HardDisk,
-                                  true /* aImplicit */);
+                                  true /* aImplicit */,
+                                  0 /* No bandwidth limit */);
             if (FAILED(rc)) throw rc;
 
Index: /trunk/src/VBox/Main/MediumAttachmentImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/MediumAttachmentImpl.cpp	(revision 31300)
+++ /trunk/src/VBox/Main/MediumAttachmentImpl.cpp	(revision 31301)
@@ -39,5 +39,6 @@
           type(DeviceType_Null),
           fPassthrough(false),
-          fImplicit(false)
+          fImplicit(false),
+          mBandwidthLimit(0)
     { }
 
@@ -92,10 +93,11 @@
  * Initializes the medium attachment object.
  *
- * @param aParent     Machine object.
- * @param aMedium     Medium object.
- * @param aController Controller the hard disk is attached to.
- * @param aPort       Port number.
- * @param aDevice     Device number on the port.
- * @param aPassthrough Wether accesses are directly passed to the host drive.
+ * @param aParent           Machine object.
+ * @param aMedium           Medium object.
+ * @param aController       Controller the hard disk is attached to.
+ * @param aPort             Port number.
+ * @param aDevice           Device number on the port.
+ * @param aPassthrough      Whether accesses are directly passed to the host drive.
+ * @param aBandwidthLimit   Bandwidth limit in Mbps
  */
 HRESULT MediumAttachment::init(Machine *aParent,
@@ -105,5 +107,6 @@
                                LONG aDevice,
                                DeviceType_T aType,
-                               bool aPassthrough)
+                               bool aPassthrough,
+                               ULONG aBandwidthLimit)
 {
     LogFlowThisFuncEnter();
@@ -133,6 +136,5 @@
     m->bd->fImplicit = false;
 
-    /* Default is no limit. */
-    m->bd->mBandwidthLimit = 0;
+    m->bd->mBandwidthLimit = aBandwidthLimit;
 
     /* Confirm a successful initialization when it's the case */
Index: /trunk/src/VBox/Main/include/MediumAttachmentImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/MediumAttachmentImpl.h	(revision 31300)
+++ /trunk/src/VBox/Main/include/MediumAttachmentImpl.h	(revision 31301)
@@ -48,5 +48,6 @@
                  LONG aDevice,
                  DeviceType_T aType,
-                 bool fPassthrough);
+                 bool fPassthrough,
+                 ULONG aBandwidthLimit);
     void uninit();
 
Index: /trunk/src/VBox/Main/xml/Settings.cpp
===================================================================
--- /trunk/src/VBox/Main/xml/Settings.cpp	(revision 31300)
+++ /trunk/src/VBox/Main/xml/Settings.cpp	(revision 31301)
@@ -1578,4 +1578,5 @@
                   && (uuid                      == a.uuid)
                   && (strHostDriveSrc           == a.strHostDriveSrc)
+                  && (ulBandwidthLimit          == a.ulBandwidthLimit)
                 )
            );
@@ -2754,4 +2755,5 @@
                     throw ConfigFileError(this, pelmImage, N_("Required AttachedDevice/@device attribute is missing"));
 
+                pelmAttached->getAttributeValue("bandwidthLimit", att.ulBandwidthLimit);
                 sctl.llAttachedDevices.push_back(att);
             }
@@ -3814,4 +3816,7 @@
             pelmDevice->setAttribute("device", att.lDevice);
 
+            if (att.ulBandwidthLimit)
+                pelmDevice->setAttribute("bandwidthLimit", att.ulBandwidthLimit);
+
             // attached image, if any
             if (    !att.uuid.isEmpty()
@@ -4153,4 +4158,11 @@
                     break; /* abort the loop -- we will not raise the version further */
                 }
+
+                /* Bandwidth limitations are new in VirtualBox 3.3 (1.11) */
+                if (att.ulBandwidthLimit != 0)
+                {
+                    m->sv = SettingsVersion_v1_11;
+                    break; /* abort the loop -- we will not raise the version further */
+                }
             }
         }
