Index: /trunk/src/VBox/Devices/Builtins.cpp
===================================================================
--- /trunk/src/VBox/Devices/Builtins.cpp	(revision 30975)
+++ /trunk/src/VBox/Devices/Builtins.cpp	(revision 30976)
@@ -121,9 +121,7 @@
     if (RT_FAILURE(rc))
         return rc;
-#ifdef VBOX_WITH_AUDIO_INTELHD
     rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceICH6_HDA);
     if (RT_FAILURE(rc))
         return rc;
-#endif
     rc = pCallbacks->pfnRegister(pCallbacks, &g_DeviceAudioSniffer);
     if (RT_FAILURE(rc))
Index: /trunk/src/VBox/Devices/Builtins.h
===================================================================
--- /trunk/src/VBox/Devices/Builtins.h	(revision 30975)
+++ /trunk/src/VBox/Devices/Builtins.h	(revision 30976)
@@ -61,7 +61,5 @@
 extern const PDMDEVREG g_DeviceICHAC97;
 extern const PDMDEVREG g_DeviceSB16;
-#ifdef VBOX_WITH_AUDIO_INTELHD
 extern const PDMDEVREG g_DeviceICH6_HDA;
-#endif
 extern const PDMDEVREG g_DeviceAudioSniffer;
 extern const PDMDEVREG g_DeviceOHCI;
Index: /trunk/src/VBox/Devices/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Devices/Makefile.kmk	(revision 30975)
+++ /trunk/src/VBox/Devices/Makefile.kmk	(revision 30976)
@@ -314,15 +314,10 @@
 	Audio/DevIchAc97.cpp \
 	Audio/DevSB16.cpp \
+	Audio/DevIchIntelHDA.cpp \
+	Audio/DevCodec.cpp \
 	PC/DevDMA.cpp \
 	Storage/fdc.c \
 	Serial/DevSerial.cpp \
 	Parallel/DevParallel.cpp
-
-ifdef VBOX_WITH_AUDIO_INTELHD
-    DevicesR3_SOURCES += Audio/DevIchIntelHDA.cpp
-    DevicesR3_SOURCES += Audio/DevCodec.cpp
-    DevicesR3_DEFS    += VBOX_WITH_AUDIO_INTELHD
-    VBoxDD_DEFS    += VBOX_WITH_AUDIO_INTELHD
-endif
 
 ifdef VBOX_DYNAMIC_NET_ATTACH
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp	(revision 30976)
@@ -295,5 +295,5 @@
         }
         RTPrintf(                            "]\n");
-        RTPrintf("                            [--audiocontroller ac97|sb16]\n"
+        RTPrintf("                            [--audiocontroller ac97|hda|sb16]\n"
                  "                            [--clipboard disabled|hosttoguest|guesttohost|\n"
                  "                                         bidirectional]\n");
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 30976)
@@ -1215,4 +1215,10 @@
                         pszCtrl = "SB16";
                     break;
+                case AudioControllerType_HDA:
+                    if (details == VMINFO_MACHINEREADABLE)
+                        pszCtrl = "hda";
+                    else
+                        pszCtrl = "HDA";
+                    break;
             }
         }
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 30976)
@@ -1726,4 +1726,6 @@
                 else if (!strcmp(ValueUnion.psz, "ac97"))
                     CHECK_ERROR(audioAdapter, COMSETTER(AudioController)(AudioControllerType_AC97));
+                else if (!strcmp(ValueUnion.psz, "hda"))
+                    CHECK_ERROR(audioAdapter, COMSETTER(AudioController)(AudioControllerType_HDA));
                 else
                 {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 30976)
@@ -2744,4 +2744,6 @@
     mAudioControllerTypes [KAudioControllerType_SB16] =
         tr ("SoundBlaster 16", "AudioControllerType");
+    mAudioControllerTypes [KAudioControllerType_HDA] =
+    tr ("Intel HD Audio", "AudioControllerType");
 
     mNetworkAdapterTypes [KNetworkAdapterType_Am79C970A] =
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsAudio.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsAudio.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/vm/VBoxVMSettingsAudio.cpp	(revision 30976)
@@ -108,4 +108,6 @@
     /* Refill them */
     mCbAudioController->insertItem (mCbAudioController->count(),
+        vboxGlobal().toString (KAudioControllerType_HDA));
+    mCbAudioController->insertItem (mCbAudioController->count(),
         vboxGlobal().toString (KAudioControllerType_AC97));
     mCbAudioController->insertItem (mCbAudioController->count(),
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxApplianceEditorWgt.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxApplianceEditorWgt.cpp	(revision 30975)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxApplianceEditorWgt.cpp	(revision 30976)
@@ -406,4 +406,5 @@
                     e->addItem (vboxGlobal().toString (KAudioControllerType_AC97), KAudioControllerType_AC97);
                     e->addItem (vboxGlobal().toString (KAudioControllerType_SB16), KAudioControllerType_SB16);
+                    e->addItem (vboxGlobal().toString (KAudioControllerType_HDA),  KAudioControllerType_HDA);
                     editor = e;
                     break;
Index: /trunk/src/VBox/Main/AudioAdapterImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/AudioAdapterImpl.cpp	(revision 30975)
+++ /trunk/src/VBox/Main/AudioAdapterImpl.cpp	(revision 30976)
@@ -301,4 +301,5 @@
             case AudioControllerType_AC97:
             case AudioControllerType_SB16:
+            case AudioControllerType_HDA:
             {
                 mData.backup();
Index: /trunk/src/VBox/Main/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 30975)
+++ /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 30976)
@@ -1811,5 +1811,5 @@
 
         /*
-         * AC'97 ICH / SoundBlaster16 audio
+         * AC'97 ICH / SoundBlaster16 audio / Intel HD Audio
          */
         BOOL enabled;
@@ -1829,5 +1829,5 @@
                     /* default: ICH AC97 */
                     InsertConfigNode(pDevices, "ichac97", &pDev);
-                    rc = CFGMR3InsertNode(pDev,     "0", &pInst);
+                    InsertConfigNode(pDev,     "0", &pInst);
                     InsertConfigInteger(pInst, "Trusted",          1); /* boolean */
                     InsertConfigInteger(pInst, "PCIDeviceNo",      5);
@@ -1851,4 +1851,16 @@
                     InsertConfigInteger(pCfg,  "Version", 0x0405);
                     break;
+                }
+                case AudioControllerType_HDA:
+                {
+                    /* Intel HD Audio */
+                    InsertConfigNode(pDevices, "hda", &pDev);
+                    InsertConfigNode(pDev,     "0", &pInst);
+                    InsertConfigInteger(pInst, "Trusted",          1); /* boolean */
+                    InsertConfigInteger(pInst, "PCIDeviceNo",      5);
+                    Assert(!afPciDeviceNo[5]);
+                    afPciDeviceNo[5] = true;
+                    InsertConfigInteger(pInst, "PCIFunctionNo",    0);
+                    InsertConfigNode(pInst,    "Config", &pCfg);
                 }
             }
Index: /trunk/src/VBox/Main/ProgressProxyImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ProgressProxyImpl.cpp	(revision 30975)
+++ /trunk/src/VBox/Main/ProgressProxyImpl.cpp	(revision 30976)
@@ -313,4 +313,6 @@
     HRESULT hrc;
     LogFlowThisFunc(("\n"));
+    
+    NOREF(fEarly);
 
     /*
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 30975)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 30976)
@@ -466,5 +466,10 @@
            -->
     </const>
-    <const name="Future"     value="13">
+    <const name="v1_11"     value="13">
+      <desc>Settings version "1.11", written by VirtualBox 3.3.x.</desc>
+      <!-- Machine changes: HD Audio controller
+           -->
+    </const>
+    <const name="Future"     value="99999">
       <desc>Settings version greater than "1.10", written by a future VirtualBox version.</desc>
     </const>
@@ -12133,4 +12138,5 @@
     <const name="AC97" value="0"/>
     <const name="SB16" value="1"/>
+    <const name="HDA"  value="2"/>
   </enum>
 
Index: /trunk/src/VBox/Main/webservice/vboxweb.cpp
===================================================================
--- /trunk/src/VBox/Main/webservice/vboxweb.cpp	(revision 30975)
+++ /trunk/src/VBox/Main/webservice/vboxweb.cpp	(revision 30976)
@@ -421,5 +421,5 @@
     {
         // wait for a socket to arrive on the queue
-        size_t cIdleThreads, cThreads;
+        size_t cIdleThreads = 0, cThreads = 0;
         m_soap->socket = m_pQ->get(cIdleThreads, cThreads);
 
Index: /trunk/src/VBox/Main/xml/Settings.cpp
===================================================================
--- /trunk/src/VBox/Main/xml/Settings.cpp	(revision 30975)
+++ /trunk/src/VBox/Main/xml/Settings.cpp	(revision 30976)
@@ -30,6 +30,6 @@
  *
  *   3) In the settings writer method, write the setting _only_ if the current settings
- *      version (stored in m->sv) is high enough. That is, for VirtualBox 3.2, write it
- *      only if (m->sv >= SettingsVersion_v1_10).
+ *      version (stored in m->sv) is high enough. That is, for VirtualBox 3.3, write it
+ *      only if (m->sv >= SettingsVersion_v1_11).
  *
  *   4) In MachineConfigFile::bumpSettingsVersionIfNeeded(), check if the new setting has
@@ -82,5 +82,5 @@
 
 /** VirtualBox XML settings version number substring ("x.y")  */
-#define VBOX_XML_VERSION        "1.10"
+#define VBOX_XML_VERSION        "1.11"
 
 /** VirtualBox XML settings version platform substring */
@@ -283,5 +283,7 @@
                 else if (ulMinor == 10)
                     m->sv = SettingsVersion_v1_10;
-                else if (ulMinor > 10)
+                else if (ulMinor == 11)
+                    m->sv = SettingsVersion_v1_11;
+                else if (ulMinor > 11)
                     m->sv = SettingsVersion_Future;
             }
@@ -303,5 +305,5 @@
         // creating new settings file:
         m->strSettingsVersionFull = VBOX_XML_VERSION_FULL;
-        m->sv = SettingsVersion_v1_10;
+        m->sv = SettingsVersion_v1_11;
     }
 }
@@ -2047,4 +2049,6 @@
         else if (strTemp == "AC97")
             aa.controllerType = AudioControllerType_AC97;
+        else if (strTemp == "HDA")
+            aa.controllerType = AudioControllerType_HDA;
         else
             throw ConfigFileError(this, &elmAudioAdapter, N_("Invalid value '%s' in AudioAdapter/@controller attribute"), strTemp.c_str());
@@ -3415,5 +3419,5 @@
         {
             /* m->sv >= SettingsVersion_v1_10 */
-            xml::ElementNode *pelmDisabledNode;
+            xml::ElementNode *pelmDisabledNode= NULL;
             if (nic.fHasDisabledNAT)
                 pelmDisabledNode = pelmAdapter->createChild("DisabledModes");
@@ -3476,7 +3480,24 @@
 
     xml::ElementNode *pelmAudio = pelmHardware->createChild("AudioAdapter");
-    pelmAudio->setAttribute("controller", (hw.audioAdapter.controllerType == AudioControllerType_SB16) ? "SB16" : "AC97");
-
-    if (   m->sv >= SettingsVersion_v1_10)
+    const char *pcszController;
+    switch (hw.audioAdapter.controllerType)
+    {
+        case AudioControllerType_SB16:
+            pcszController = "SB16";
+            break;
+        case AudioControllerType_HDA:
+            if (m->sv >= SettingsVersion_v1_11)
+            {
+                pcszController = "HDA";
+                break;
+            }
+            /* fall through */
+        case AudioControllerType_AC97:
+        default:
+            pcszController = "AC97"; break;
+    }
+    pelmAudio->setAttribute("controller", pcszController);
+
+    if (m->sv >= SettingsVersion_v1_10)
     {
         xml::ElementNode *pelmRTC = pelmHardware->createChild("RTC");
