sh_update_paging_modes() as its last action already invokes sh_update_cr3(). Therefore there is no reason to invoke update_cr3() another time immediately after calling paging_update_paging_modes(), the more that sh_update_cr3() does not short-circuit the "nothing changed" case.
Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -1445,8 +1445,8 @@ int arch_set_info_guest( if ( paging_mode_enabled(d) ) paging_update_paging_modes(v); - - update_cr3(v); + else + update_cr3(v); #endif /* CONFIG_PV */ out: