--- 1/kernel/nv_uvm_interface.c
+++ 1/kernel/nv_uvm_interface.c
@@ -384,21 +384,23 @@
         return UVM_ERR_INVALID_ARGUMENT;
     }
 
-    g_nvKernelProvider.sessionCreate = nvUvmInterfaceSessionCreate;
-    g_nvKernelProvider.sessionDestroy = nvUvmInterfaceSessionDestroy;
-    g_nvKernelProvider.addressSpaceCreate = nvUvmInterfaceAddressSpaceCreate;
-    g_nvKernelProvider.addressSpaceCreateMirrored = nvUvmInterfaceAddressSpaceCreateMirrored;
-    g_nvKernelProvider.addressSpaceDestroy = nvUvmInterfaceAddressSpaceDestroy;
-    g_nvKernelProvider.allocGpuMemoryFB = nvUvmInterfaceMemoryAllocFB;
-    g_nvKernelProvider.allocGpuMemorySys = nvUvmInterfaceMemoryAllocSys;
-    g_nvKernelProvider.freeGpuMemory = nvUvmInterfaceMemoryFree;
-    g_nvKernelProvider.cpuMap = nvUvmInterfaceMemoryCpuMap;
-    g_nvKernelProvider.cpuUnmap = nvUvmInterfaceMemoryCpuUnMap;
-    g_nvKernelProvider.channelAllocate = nvUvmInterfaceChannelAllocate;
-    g_nvKernelProvider.channelDestroy  = nvUvmInterfaceChannelDestroy;
-    g_nvKernelProvider.channelTranslateError = nvUvmInterfaceChannelTranslateError;
-    g_nvKernelProvider.copyEngineAllocate = nvUvmInterfaceCopyEngineAllocate;
-    g_nvKernelProvider.getAttachedUuids = nvUvmInterfaceGetAttachedUuids;
+    pax_open_kernel();
+    *(void **)&g_nvKernelProvider.sessionCreate = nvUvmInterfaceSessionCreate;
+    *(void **)&g_nvKernelProvider.sessionDestroy = nvUvmInterfaceSessionDestroy;
+    *(void **)&g_nvKernelProvider.addressSpaceCreate = nvUvmInterfaceAddressSpaceCreate;
+    *(void **)&g_nvKernelProvider.addressSpaceCreateMirrored = nvUvmInterfaceAddressSpaceCreateMirrored;
+    *(void **)&g_nvKernelProvider.addressSpaceDestroy = nvUvmInterfaceAddressSpaceDestroy;
+    *(void **)&g_nvKernelProvider.allocGpuMemoryFB = nvUvmInterfaceMemoryAllocFB;
+    *(void **)&g_nvKernelProvider.allocGpuMemorySys = nvUvmInterfaceMemoryAllocSys;
+    *(void **)&g_nvKernelProvider.freeGpuMemory = nvUvmInterfaceMemoryFree;
+    *(void **)&g_nvKernelProvider.cpuMap = nvUvmInterfaceMemoryCpuMap;
+    *(void **)&g_nvKernelProvider.cpuUnmap = nvUvmInterfaceMemoryCpuUnMap;
+    *(void **)&g_nvKernelProvider.channelAllocate = nvUvmInterfaceChannelAllocate;
+    *(void **)&g_nvKernelProvider.channelDestroy  = nvUvmInterfaceChannelDestroy;
+    *(void **)&g_nvKernelProvider.channelTranslateError = nvUvmInterfaceChannelTranslateError;
+    *(void **)&g_nvKernelProvider.copyEngineAllocate = nvUvmInterfaceCopyEngineAllocate;
+    *(void **)&g_nvKernelProvider.getAttachedUuids = nvUvmInterfaceGetAttachedUuids;
+    pax_close_kernel();
 
     *ppGpuProvider = &g_nvKernelProvider;
     g_pNvUvmEvents = importedUvmOps;