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