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);