Index: /trunk/src/VBox/Devices/PC/DevACPI.cpp
===================================================================
--- /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 85854)
+++ /trunk/src/VBox/Devices/PC/DevACPI.cpp	(revision 85855)
@@ -3617,4 +3617,8 @@
     RT_ZERO(Ivrs);
 
+    uint16_t const uIommuBus = 0;
+    uint16_t const uIommuDev = RT_HI_U16(pThis->u32IommuAmdPciAddress);
+    uint16_t const uIommuFn  = RT_LO_U16(pThis->u32IommuAmdPciAddress);
+
     /* IVRS header. */
     acpiR3PrepareHeader(pThis, &Ivrs.Hdr.header, "IVRS", sizeof(Ivrs), ACPI_IVRS_FMT_REV_FIXED);
@@ -3635,5 +3639,5 @@
                                        + sizeof(Ivrs.IvhdType10IoApic)
                                        + sizeof(Ivrs.IvhdType10Hpet);
-    Ivrs.IvhdType10.u16DeviceId        = pThis->u32IommuAmdPciAddress;
+    Ivrs.IvhdType10.u16DeviceId        = PCIBDF_MAKE(uIommuBus, VBOX_PCI_DEVFN_MAKE(uIommuDev, uIommuFn));
     Ivrs.IvhdType10.u16CapOffset       = 0;             /* 0=No multiple IOMMU functionality. */
     Ivrs.IvhdType10.u64BaseAddress     = 0xfeb80000;    /* MMIO base address: Taken from real hardware ACPI dumps. */
@@ -4582,6 +4586,6 @@
 
     /* Warn if the SB IOAPIC is not at the required address if an AMD IOMMU is configured. */
-    if (   pThis->u32IocPciAddress
-        && pThis->u32SbIoApicPciAddress != VBOX_PCI_BDF_SB_IOAPIC)
+    if (   pThis->u32IommuAmdPciAddress
+        && pThis->u32SbIoApicPciAddress != RT_MAKE_U32(VBOX_PCI_FN_SB_IOAPIC, VBOX_PCI_DEV_SB_IOAPIC))
     {
         /** @todo Maybe make this a VM startup failure later. */
