diff -r d3d0a7421f69 sys/arch/amd64/conf/XEN3_DOM0
--- a/sys/arch/amd64/conf/XEN3_DOM0     Sun Sep 18 22:01:24 2016 +0530
+++ b/sys/arch/amd64/conf/XEN3_DOM0     Sun Sep 18 22:15:15 2016 +0530
@@ -2,6 +2,8 @@

include        "arch/amd64/conf/std.xen"

+options                MULTIPROCESSOR
+
options        INCLUDE_CONFIG_FILE     # embed config file in kernel binary

#options       UVMHIST
diff -r d3d0a7421f69 sys/arch/xen/x86/xen_pmap.c
--- a/sys/arch/xen/x86/xen_pmap.c       Sun Sep 18 22:01:24 2016 +0530
+++ b/sys/arch/xen/x86/xen_pmap.c       Sun Sep 18 22:15:15 2016 +0530
@@ -192,9 +192,14 @@

       if (pmap_valid_entry(opte)) {
#if defined(MULTIPROCESSOR)
-               kpreempt_disable();
-               pmap_tlb_shootdown(pmap_kernel(), va, opte, TLBSHOOT_KENTER);
-               kpreempt_enable();
+               if (__predict_false(x86_mp_online == false)) {
+                       pmap_update_pg(va);
+               } else {
+                       kpreempt_disable();
+                       pmap_tlb_shootdown(pmap_kernel(), va, opte,
+                                          TLBSHOOT_KENTER);
+                       kpreempt_enable();
+               }
#else
               /* Don't bother deferring in the single CPU case. */
               pmap_update_pg(va);