[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [XEN PATCH] x86/domctl: Have XEN_DOMCTL_getpageframeinfo3 preemptible
This hypercall can take a long time to finish because it attempts to grab the `hostp2m' lock up to 1024 times. The accumulated wait for the lock can take several seconds. This can easily happen with a guest with 32 vcpus and plenty of RAM, during localhost migration. Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- Notes: I don't know if it's a correct way to make the hypercall preemptible, the patch kind of modify the response, but libxc doesn't seems to care. Is it fine to modify the domctl_t that the domain (dom0) provides? If not, where could we store the progress made? xen/arch/x86/domctl.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index 43e368d63bb9..5c0a7462e63b 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -425,6 +425,18 @@ long arch_do_domctl( ret = -EFAULT; break; } + + if ( hypercall_preempt_check() ) { + domctl->u.getpageframeinfo3.num = num - i - 1; + domctl->u.getpageframeinfo3.array.p = + guest_handle + ((i + 1) * width); + if ( __copy_to_guest(u_domctl, domctl, 1) ) { + ret = -EFAULT; + break; + } + return hypercall_create_continuation(__HYPERVISOR_domctl, + "h", u_domctl); + } } break; -- Anthony PERARD _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |