[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] -EINTR return in domain_relinquish_resources
On Thu, Jan 22, 2015 at 10:00:35AM +0000, Jan Beulich wrote: > >>> On 21.01.15 at 22:27, <konrad.wilk@xxxxxxxxxx> wrote: > > As I was looking at some of the XSA I realized that the > > call-chain of: > > > > domain_relinquish_resources > > ->vcpu_destroy_pagetables > > -> put_page_and_type_preemptible > > -> __put_page_type > > returns -EINTR > > [...] > > b). Or should the hypervisor convert the -EINTR to -ERESTART > > (or -EAGAIN) - which most of the code (see users of > > get_page_type_preemptible) do right now? > > This one, in vcpu_destroy_pagetables(). I'm afraid I overlooked > this when adding the preemption capability here. OK. Would this RFC patch be OK? (I can send it off as normal - just want to make sure you are OK with this being put there) From 1558a9870f438df949a8ad09a27825bd35a9f4ea Mon Sep 17 00:00:00 2001 From: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> Date: Thu, 22 Jan 2015 11:34:21 -0500 Subject: [PATCH] domain: In vcpu_destroy_pagetables we can return -EINTR instead of -EAGAIN which has the side effect that domain_relinquish_resources will stop and return to user-space -EINTR - which it is not equipped to deal with. The preemption mechanism we have to domain destruction is to return -EAGAIN and as such we need to catch the case of: domain_relinquish_resources ->vcpu_destroy_pagetables -> put_page_and_type_preemptible -> __put_page_type returns -EINTR and convert it to the proper type. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> --- xen/arch/x86/mm.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c index 6e9c2c0..3ac2ae5 100644 --- a/xen/arch/x86/mm.c +++ b/xen/arch/x86/mm.c @@ -2677,6 +2677,9 @@ int vcpu_destroy_pagetables(struct vcpu *v) v->arch.cr3 = 0; + if ( rc == -EINTR ) + rc = -EAGAIN; + return rc; } -- 2.1.0 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |