Index: /trunk/include/VBox/pdmapi.h
===================================================================
--- /trunk/include/VBox/pdmapi.h	(revision 19994)
+++ /trunk/include/VBox/pdmapi.h	(revision 19995)
@@ -46,4 +46,5 @@
 VMMDECL(int)    PDMIsaSetIrq(PVM pVM, uint8_t u8Irq, uint8_t u8Level);
 VMMDECL(int)    PDMIoApicSetIrq(PVM pVM, uint8_t u8Irq, uint8_t u8Level);
+VMMDECL(bool)   PDMHasIoApic(PVM pVM);
 VMMDECL(int)    PDMApicHasPendingIrq(PVM pVM, bool *pfPending);
 VMMDECL(int)    PDMApicSetBase(PVM pVM, uint64_t u64Base);
Index: /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp	(revision 19994)
+++ /trunk/src/VBox/VMM/VMMAll/PDMAll.cpp	(revision 19995)
@@ -147,4 +147,16 @@
 
 /**
+ * Returns presence of an IO-APIC
+ *
+ * @returns VBox true if IO-APIC is present
+ * @param   pVM             VM handle.
+ */
+VMMDECL(bool) PDMHasIoApic(PVM pVM)
+{
+    return pVM->pdm.s.IoApic.CTX_SUFF(pDevIns) != NULL;
+}
+
+
+/**
  * Set the APIC base.
  *
Index: /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
===================================================================
--- /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp	(revision 19994)
+++ /trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp	(revision 19995)
@@ -2163,5 +2163,5 @@
      * @todo reduce overhead
      */
-    if (    CPUMIsGuestInLongModeEx(pCtx)
+    if (    PDMHasIoApic(pVM)
         &&  pVM->hwaccm.s.vmx.pAPIC)
     {
@@ -3424,4 +3424,5 @@
             RTGCPHYS GCPhys;
             PDMApicGetBase(pVM, &GCPhys);
+            GCPhys &= PAGE_BASE_GC_MASK;
             GCPhys += VMX_EXIT_QUALIFICATION_APIC_ACCESS_OFFSET(exitQualification);
 
