diff -urN vbox-clean-bk\src\VBox\HostDrivers/Support/Makefile.kmk vbox-clean\src\VBox\HostDrivers/Support/Makefile.kmk
--- vbox-clean-bk\src\VBox\HostDrivers/Support/Makefile.kmk	2015-09-23 07:13:28.000000000 +0300
+++ vbox-clean\src\VBox\HostDrivers/Support/Makefile.kmk	2015-09-27 00:34:38.000000000 +0300
@@ -519,7 +519,9 @@
 	SUPDrv.cpp \
 	SUPDrvGip.cpp \
 	SUPDrvSem.cpp \
-	SUPLibAll.cpp
+	SUPLibAll.cpp \
+	SUPDrvTracerA.asm \
+	SUPDrvTracer.cpp
 
 endif # os2
 
diff -urN vbox-clean-bk\src\VBox\HostDrivers/Support/os2/SUPDrv-os2.cpp vbox-clean\src\VBox\HostDrivers/Support/os2/SUPDrv-os2.cpp
--- vbox-clean-bk\src\VBox\HostDrivers/Support/os2/SUPDrv-os2.cpp	2015-09-23 07:13:28.000000000 +0300
+++ vbox-clean\src\VBox\HostDrivers/Support/os2/SUPDrv-os2.cpp	2015-09-27 00:32:04.000000000 +0300
@@ -221,7 +221,9 @@
     /*
      * Close the session.
      */
-    supdrvSessionRelease(pSession);
+    if (pSession)
+        supdrvSessionRelease(pSession);
+
     return 0;
 }
 
@@ -244,11 +246,9 @@
                &&   (   pSession->sfn != sfn
                      || pSession->Process != Process));
 
-        if (RT_LIKELY(pSession))
-            supdrvSessionRetain(pSession);
     }
     RTSpinlockRelease(g_Spinlock);
-    if (RT_UNLIKELY(!pSession))
+    if (!pSession)
     {
         OSDBGPRINT(("VBoxDrvIoctl: WHUT?!? pSession == NULL! This must be a mistake... pid=%d\n", (int)Process));
         return VERR_INVALID_PARAMETER;
@@ -258,7 +258,6 @@
      * Dispatch the fast IOCtl.
      */
     supdrvIOCtlFast(iFunction, 0, &g_DevExt, pSession);
-    supdrvSessionRelease(pSession);
     return 0;
 }
 
@@ -271,6 +270,7 @@
     const RTPROCESS     Process = RTProcSelf();
     const unsigned      iHash = SESSION_HASH(sfn);
     PSUPDRVSESSION      pSession;
+    int rc = 0;
 
     RTSpinlockAcquire(g_Spinlock);
     pSession = g_apSessionHashTab[iHash];
@@ -280,9 +280,6 @@
         while (     pSession
                &&   (   pSession->sfn != sfn
                      || pSession->Process != Process));
-
-        if (RT_LIKELY(pSession))
-            supdrvSessionRetain(pSession);
     }
     RTSpinlockRelease(g_Spinlock);
     if (!pSession)
@@ -306,7 +303,7 @@
         PSUPREQHDR pHdr = (PSUPREQHDR)pvParm;
         AssertReturn(*pcbParm == sizeof(*pHdr), VERR_INVALID_PARAMETER);
         KernVMLock_t Lock;
-        int rc = KernVMLock(VMDHL_WRITE, pHdr, *pcbParm, &Lock, (KernPageList_t *)-1, NULL);
+        rc = KernVMLock(VMDHL_WRITE, pHdr, *pcbParm, &Lock, (KernPageList_t *)-1, NULL);
         AssertMsgReturn(!rc, ("KernVMLock(VMDHL_WRITE, %p, %#x, &p, NULL, NULL) -> %d\n", pHdr, *pcbParm, &Lock, rc), VERR_LOCK_FAILED);
 
         /*
@@ -352,12 +349,11 @@
          * Unlock and return.
          */
         int rc2 = KernVMUnlock(&Lock);
-        AssertMsg(!rc2, ("rc2=%d\n", rc2)); NOREF(rc2);s
+        AssertMsg(!rc2, ("rc2=%d\n", rc2)); NOREF(rc2);
     }
     else
         rc = VERR_NOT_SUPPORTED;
 
-    supdrvSessionRelease(pSession);
     Log2(("VBoxDrvIOCtl: returns %d\n", rc));
     return rc;
 }
@@ -414,7 +410,7 @@
 
 bool VBOXCALL  supdrvOSAreTscDeltasInSync(void)
 {
-    NOREF(pDevExt);
+    // NOREF(pDevExt);
     return false;
 }
 
diff -urN vbox-clean-bk\src\VBox\HostDrivers/Support/os2/SUPLib-os2.cpp vbox-clean\src\VBox\HostDrivers/Support/os2/SUPLib-os2.cpp
--- vbox-clean-bk\src\VBox\HostDrivers/Support/os2/SUPLib-os2.cpp	2015-09-23 07:13:28.000000000 +0300
+++ vbox-clean\src\VBox\HostDrivers/Support/os2/SUPLib-os2.cpp	2015-09-27 00:32:16.000000000 +0300
@@ -150,15 +150,11 @@
 int suplibOsIOCtlFast(PSUPLIBDATA pThis, uintptr_t uFunction, uintptr_t idCpu)
 {
     NOREF(idCpu);
-    int32_t rcRet = VERR_INTERNAL_ERROR;
     int rc = DosDevIOCtl((HFILE)pThis->hDevice, SUP_CTL_CATEGORY_FAST, uFunction,
                          NULL, 0, NULL,
                          NULL, 0, NULL);
-    if (RT_LIKELY(rc == NO_ERROR))
-        rc = rcRet;
-    else
-        rc = RTErrConvertFromOS2(rc);
-    return rc;
+
+    return rc = RTErrConvertFromOS2(rc);
 }
 
 
diff -urN vbox-clean-bk\src\VBox\HostDrivers/Support/SUPDrv.cpp vbox-clean\src\VBox\HostDrivers/Support/SUPDrv.cpp
--- vbox-clean-bk\src\VBox\HostDrivers/Support/SUPDrv.cpp	2015-09-23 07:13:28.000000000 +0300
+++ vbox-clean\src\VBox\HostDrivers/Support/SUPDrv.cpp	2015-09-27 00:35:52.000000000 +0300
@@ -571,7 +571,7 @@
                         g_aFunctions[2].pfn = (void *)(uintptr_t)ASMGetSS();    /* SUPR0Abs64bitKernelSS */
                         g_aFunctions[3].pfn = (void *)(uintptr_t)ASMGetDS();    /* SUPR0Abs64bitKernelDS */
 # else
-                        g_aFunctions[0].pfn = g_aFunctions[1].pfn = g_aFunctions[2].pfn = g_aFunctions[4].pfn = (void *)0;
+                        g_aFunctions[0].pfn = g_aFunctions[1].pfn = g_aFunctions[2].pfn = g_aFunctions[3].pfn = (void *)0;
 # endif
                         g_aFunctions[4].pfn = (void *)(uintptr_t)ASMGetCS();    /* SUPR0AbsKernelCS */
                         g_aFunctions[5].pfn = (void *)(uintptr_t)ASMGetSS();    /* SUPR0AbsKernelSS */
diff -urN vbox-clean-bk\src\VBox\HostDrivers/Support/SUPR3HardenedVerify.cpp vbox-clean\src\VBox\HostDrivers/Support/SUPR3HardenedVerify.cpp
--- vbox-clean-bk\src\VBox\HostDrivers/Support/SUPR3HardenedVerify.cpp	2015-09-23 07:13:30.000000000 +0300
+++ vbox-clean\src\VBox\HostDrivers/Support/SUPR3HardenedVerify.cpp	2015-09-27 00:36:50.000000000 +0300
@@ -126,8 +126,13 @@
     {   kSupIFT_Dll,  kSupID_AppSharedLib,      false, "VBoxVMM" SUPLIB_DLL_SUFF },
     {   kSupIFT_Dll,  kSupID_AppSharedLib,      false, "VBoxREM" SUPLIB_DLL_SUFF },
 #if HC_ARCH_BITS == 32
+#ifndef RT_OS_OS2
     {   kSupIFT_Dll,  kSupID_AppSharedLib,       true, "VBoxREM32" SUPLIB_DLL_SUFF },
     {   kSupIFT_Dll,  kSupID_AppSharedLib,       true, "VBoxREM64" SUPLIB_DLL_SUFF },
+#else
+    {   kSupIFT_Dll,  kSupID_AppSharedLib,       true, "VBoxRM32" SUPLIB_DLL_SUFF },
+    {   kSupIFT_Dll,  kSupID_AppSharedLib,       true, "VBoxRM64" SUPLIB_DLL_SUFF },
+#endif
 #endif
     {   kSupIFT_Dll,  kSupID_AppSharedLib,      false, "VBoxDD" SUPLIB_DLL_SUFF },
     {   kSupIFT_Dll,  kSupID_AppSharedLib,      false, "VBoxDD2" SUPLIB_DLL_SUFF },
@@ -148,12 +153,20 @@
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxDragAndDropSvc" SUPLIB_DLL_SUFF },
 //#endif
 //#ifdef VBOX_WITH_GUEST_PROPS
+#ifndef RT_OS_OS2
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxGuestPropSvc" SUPLIB_DLL_SUFF },
+#else
+    {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxSIS" SUPLIB_DLL_SUFF },
+#endif
 //#endif
 //#ifdef VBOX_WITH_GUEST_CONTROL
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxGuestControlSvc" SUPLIB_DLL_SUFF },
 //#endif
+#ifndef RT_OS_OS2
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxHostChannel" SUPLIB_DLL_SUFF },
+#else
+    {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxHC" SUPLIB_DLL_SUFF },
+#endif
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxSharedCrOpenGL" SUPLIB_DLL_SUFF },
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxOGLhostcrutil" SUPLIB_DLL_SUFF },
     {   kSupIFT_Dll,  kSupID_AppPrivArch,        true, "VBoxOGLhosterrorspu" SUPLIB_DLL_SUFF },
