Index: /trunk/src/VBox/Devices/PC/DevACPI.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 31518)
+++ /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 31519)
@@ -161,5 +161,6 @@
     SYSTEM_INFO_INDEX_CPU_EVENT         = 14, /**< The CPU id the event is for */
     SYSTEM_INFO_INDEX_NIC_ADDRESS       = 15, /**< NIC PCI address, or 0 */
-    SYSTEM_INFO_INDEX_END               = 16,
+    SYSTEM_INFO_INDEX_AUDIO_ADDRESS     = 16, /**< Audio card PCI address, or 0 */
+    SYSTEM_INFO_INDEX_END               = 17,
     SYSTEM_INFO_INDEX_INVALID           = 0x80,
     SYSTEM_INFO_INDEX_VALID             = 0x200
@@ -255,5 +256,8 @@
     bool                fCpuHotPlug;
     /** Primary NIC PCI address */
-    uint32_t             u32NicPciAddress;
+    uint32_t            u32NicPciAddress;
+    /** Primary audio card PCI address */
+    uint32_t            u32AudioPciAddress;
+    uint32_t            u32Pad0;
 
     /** ACPI port base interface. */
@@ -1506,4 +1510,8 @@
                     break;
 
+                case SYSTEM_INFO_INDEX_AUDIO_ADDRESS:
+                    *pu32 = s->u32AudioPciAddress;
+                    break;
+
                 /* This is only for compatability with older saved states that
                    may include ACPI code that read these values.  Legacy is
@@ -2351,4 +2359,5 @@
                               "ShowCpu\0"
                               "NicPciAddress\0"
+                              "AudioPciAddress\0"
                               "CpuHotPlug\0"
                               "AmlFilePath\0"
@@ -2404,4 +2413,10 @@
         return PDMDEV_SET_ERROR(pDevIns, rc,
                                 N_("Configuration error: Failed to read \"NicPciAddress\""));
+
+    /* query primary NIC PCI address */
+    rc = CFGMR3QueryU32Def(pCfg, "AudioPciAddress", &s->u32AudioPciAddress, 0);
+    if (RT_FAILURE(rc))
+        return PDMDEV_SET_ERROR(pDevIns, rc,
+                                N_("Configuration error: Failed to read \"AudioPciAddress\""));
 
     /* query whether we are allow CPU hot plugging */
Index: /trunk/src/VBox/Devices/PC/vbox.dsl
===================================================================
--- /trunk/src/VBox/Devices/PC/vbox.dsl	(revision 31518)
+++ /trunk/src/VBox/Devices/PC/vbox.dsl	(revision 31519)
@@ -145,4 +145,5 @@
             CPEV,  32,
             NICA,  32,
+            HDAA,  32,
             Offset (0x80),
             ININ, 32,
@@ -787,4 +788,23 @@
                  {
                     if (LEqual (NICA, Zero)) {
+                        Return (0x00)
+                    }
+                    else {
+                        Return (0x0F)
+                    }
+                 }
+            }
+
+            // HDA Audio card
+            Device (HDEF)
+            {
+                Method(_ADR, 0, NotSerialized)
+                {
+                     Return (HDAA)
+                }
+
+                Method (_STA, 0, NotSerialized)
+                {
+                 if (LEqual (HDAA, Zero)) {
                         Return (0x00)
                     }
Index: /trunk/src/VBox/Main/ConsoleImpl2.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 31518)
+++ /trunk/src/VBox/Main/ConsoleImpl2.cpp	(revision 31519)
@@ -1809,11 +1809,11 @@
          * AC'97 ICH / SoundBlaster16 audio / Intel HD Audio
          */
-        BOOL enabled;
+        BOOL fAudioEnabled;
         ComPtr<IAudioAdapter> audioAdapter;
         hrc = pMachine->COMGETTER(AudioAdapter)(audioAdapter.asOutParam());                 H();
         if (audioAdapter)
-            hrc = audioAdapter->COMGETTER(Enabled)(&enabled);                               H();
-
-        if (enabled)
+            hrc = audioAdapter->COMGETTER(Enabled)(&fAudioEnabled);                         H();
+
+        if (fAudioEnabled)
         {
             AudioControllerType_T audioController;
@@ -2262,4 +2262,10 @@
                 uint32_t u32NicPciAddr = (aNic.mPciDev << 16) | aNic.mPciFn;
                 InsertConfigInteger(pCfg, "NicPciAddress",    u32NicPciAddr);
+            }
+            if (fOsXGuest && fAudioEnabled)
+            {
+                /** @todo: don't hardcode */
+                uint32_t u32AudioPciAddr = (5 << 16) | 0;
+                InsertConfigInteger(pCfg, "AudioPciAddress",    u32AudioPciAddr);
             }
             InsertConfigInteger(pCfg,  "ShowCpu", fShowCpu);
