Index: /trunk/include/VBox/pdmifs.h
===================================================================
--- /trunk/include/VBox/pdmifs.h	(revision 29588)
+++ /trunk/include/VBox/pdmifs.h	(revision 29589)
@@ -2258,7 +2258,17 @@
     DECLR3CALLBACKMEMBER(int, pfnQueryBalloonSize,(PPDMIVMMDEVCONNECTOR pInterface, uint32_t *pcbBalloon));
 
+    /**
+     * Query the current page fusion setting
+     *
+     * @returns VBox status code.
+     * @param   pInterface          Pointer to this interface.
+     * @param   pfPageFusionEnabled Pointer to boolean
+     * @thread  The emulation thread.
+     */
+    DECLR3CALLBACKMEMBER(int, pfnIsPageFusionEnabled,(PPDMIVMMDEVCONNECTOR pInterface, bool *pfPageFusionEnabled));
+
 } PDMIVMMDEVCONNECTOR;
 /** PDMIVMMDEVCONNECTOR interface ID. */
-#define PDMIVMMDEVCONNECTOR_IID                 "1c300d1b-5938-42bb-8acb-46ecfe483db7"
+#define PDMIVMMDEVCONNECTOR_IID                 "aff90240-a443-434e-9132-80c186ab97d4"
 
 
Index: /trunk/src/VBox/Main/GuestImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/GuestImpl.cpp	(revision 29588)
+++ /trunk/src/VBox/Main/GuestImpl.cpp	(revision 29589)
@@ -84,4 +84,11 @@
         mMemoryBalloonSize = 0;                     /* Default is no ballooning */
 
+    BOOL fPageFusionEnabled;
+    ret = mParent->machine()->COMGETTER(PageFusionEnabled)(&fPageFusionEnabled);
+    if (ret == S_OK)
+        mfPageFusionEnabled = fPageFusionEnabled;
+    else
+        mfPageFusionEnabled = false;                /* Default is no page fusion*/
+
     mStatUpdateInterval = 0;                    /* Default is not to report guest statistics at all */
 
@@ -204,4 +211,18 @@
 
     *aSupportsGraphics = mData.mSupportsGraphics;
+
+    return S_OK;
+}
+
+STDMETHODIMP Guest::COMGETTER(PageFusionEnabled) (BOOL *aPageFusionEnabled)
+{
+    CheckComArgOutPointerValid(aPageFusionEnabled);
+
+    AutoCaller autoCaller(this);
+    if (FAILED(autoCaller.rc())) return autoCaller.rc();
+
+    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
+
+    *aPageFusionEnabled = mfPageFusionEnabled;
 
     return S_OK;
Index: /trunk/src/VBox/Main/VMMDevInterface.cpp
===================================================================
--- /trunk/src/VBox/Main/VMMDevInterface.cpp	(revision 29588)
+++ /trunk/src/VBox/Main/VMMDevInterface.cpp	(revision 29589)
@@ -490,4 +490,31 @@
     guest->COMGETTER(MemoryBalloonSize)(&val);
     *pcbBalloon = val;
+    return VINF_SUCCESS;
+}
+
+/**
+ * Query the current page fusion setting
+ *
+ * @returns VBox status code.
+ * @param   pInterface          Pointer to this interface.
+ * @param   pfPageFusionEnabled Pointer to boolean
+ * @thread  The emulation thread.
+ */
+DECLCALLBACK(int) vmmdevIsPageFusionEnabled(PPDMIVMMDEVCONNECTOR pInterface, bool *pfPageFusionEnabled)
+{
+    PDRVMAINVMMDEV pDrv = PDMIVMMDEVCONNECTOR_2_MAINVMMDEV(pInterface);
+    BOOL           val = 0;
+
+    if (!pfPageFusionEnabled)
+        return VERR_INVALID_POINTER;
+
+    /* store that information in IGuest */
+    Guest* guest = pDrv->pVMMDev->getParent()->getGuest();
+    Assert(guest);
+    if (!guest)
+        return VERR_INVALID_PARAMETER; /** @todo wrong error */
+
+    guest->COMGETTER(PageFusionEnabled)(&val);
+    *pfPageFusionEnabled = !!val;
     return VINF_SUCCESS;
 }
@@ -749,4 +776,5 @@
     pData->Connector.pfnQueryStatisticsInterval       = vmmdevQueryStatisticsInterval;
     pData->Connector.pfnQueryBalloonSize              = vmmdevQueryBalloonSize;
+    pData->Connector.pfnIsPageFusionEnabled           = vmmdevIsPageFusionEnabled;
 
 #ifdef VBOX_WITH_HGCM
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 29588)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 29589)
@@ -8403,5 +8403,5 @@
   <interface
     name="IGuestOSType" extends="$unknown"
-    uuid="8aa950f6-668c-4388-b251-3809b404e862"
+    uuid="e3f6727e-a09b-41ea-a824-864a176472f3"
     wsmap="struct"
   >
@@ -8560,4 +8560,8 @@
     <attribute name="memoryBalloonSize" type="unsigned long">
       <desc>Guest system memory balloon size in megabytes (transient property).</desc>
+    </attribute>
+
+    <attribute name="pageFusionEnabled" type="boolean" readonly="yes">
+      <desc>Flag whether page fusion is enabled or not.</desc>
     </attribute>
 
Index: /trunk/src/VBox/Main/include/GuestImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/GuestImpl.h	(revision 29588)
+++ /trunk/src/VBox/Main/include/GuestImpl.h	(revision 29589)
@@ -82,4 +82,5 @@
     STDMETHOD(COMGETTER(MemoryBalloonSize)) (ULONG *aMemoryBalloonSize);
     STDMETHOD(COMSETTER(MemoryBalloonSize)) (ULONG aMemoryBalloonSize);
+    STDMETHOD(COMGETTER(PageFusionEnabled)) (BOOL *aPageFusionEnabled);
     STDMETHOD(COMGETTER(StatisticsUpdateInterval)) (ULONG *aUpdateInterval);
     STDMETHOD(COMSETTER(StatisticsUpdateInterval)) (ULONG aUpdateInterval);
@@ -169,4 +170,5 @@
     ULONG mStatUpdateInterval;
     ULONG mCurrentGuestStat[GUESTSTATTYPE_MAX];
+    BOOL  mfPageFusionEnabled;
 
     Console *mParent;
