From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751172AbbDYXcQ (ORCPT ); Sat, 25 Apr 2015 19:32:16 -0400 Received: from aserp1040.oracle.com ([141.146.126.69]:36466 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750883AbbDYXcO (ORCPT ); Sat, 25 Apr 2015 19:32:14 -0400 Message-ID: <553C23EE.9090101@oracle.com> Date: Sat, 25 Apr 2015 19:31:58 -0400 From: Boris Ostrovsky User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: "Ouyang Zhaowei (Charles)" , Konrad Rzeszutek Wilk , David Vrabel CC: linux-kernel@vger.kernel.org, Dingweiping , Yanqiangjun , jinjian@huawei.com Subject: Re: [PATCH] xen: vcpu_info reinit error after 'xl save -c' & 'xl restore' on PVOPS VM which has multi-cpu References: <553A0D49.2020300@huawei.com> In-Reply-To: <553A0D49.2020300@huawei.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/24/2015 05:30 AM, Ouyang Zhaowei (Charles) wrote: > If a PVOPS VM has multi-cpu the vcpu_info of cpu0 is the member of the structure HYPERVISOR_shared_info, > and the others is not, but after 'xl save -c/restore' the vcpu_info will be reinitialized, > the vcpu_info of all the vcpus will be considered as the member of HYPERVISOR_shared_info. > This will cause the cpu1 and other cpu keep receiving interrupts, and the cpu0 is waiting them to > finish the job. > So we do not reinit the vcpu_info when PVOPS vm is doing 'xl save -c/restore'. > > Signed-off-by: Charles Ouyang > --- > arch/x86/xen/suspend.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/xen/suspend.c b/arch/x86/xen/suspend.c > index d949769..b2bed45 100644 > --- a/arch/x86/xen/suspend.c > +++ b/arch/x86/xen/suspend.c > @@ -32,7 +32,8 @@ static void xen_hvm_post_suspend(int suspend_cancelled) > { > #ifdef CONFIG_XEN_PVHVM > int cpu; > - xen_hvm_init_shared_info(); > + if (!suspend_cancelled) > + xen_hvm_init_shared_info(); > xen_callback_vector(); > xen_unplug_emulated_devices(); > if (xen_feature(XENFEAT_hvm_safe_pvclock)) { Do we need to call other routines if suspend is canceled? Also, if suspend is canceled then we don't do xen_irq_resume() if that's what you meant by "vcpu_info will be reinitialized". Were you referring some other re-initialization? (The patch itself looks like the right thing to do though). -boris