From: Wen Congyang <wency@cn.fujitsu.com>
To: Aravind Gopalakrishnan <aravind.gopalakrishnan@amd.com>,
xen devel <xen-devel@lists.xen.org>
Cc: Ian Campbell <Ian.Campbell@citrix.com>,
Ian Jackson <Ian.Jackson@eu.citrix.com>,
Jiang Yunhong <yunhong.jiang@intel.com>,
Dong Eddie <eddie.dong@intel.com>, Tim Deegan <tim@xen.org>,
Jun Nakajima <jun.nakajima@intel.com>,
Yang Hongyang <yanghy@cn.fujitsu.com>,
Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>,
Lai Jiangshan <laijs@cn.fujitsu.com>
Subject: Re: [RFC Patch v3 18/18] x86/hvm: Always set pending event injection when loading VMC[BS] state.
Date: Thu, 11 Sep 2014 14:10:03 +0800 [thread overview]
Message-ID: <54113CBB.1030105@cn.fujitsu.com> (raw)
In-Reply-To: <54106910.1080207@amd.com>
On 09/10/2014 11:06 PM, Aravind Gopalakrishnan wrote:
> On 9/5/2014 4:11 AM, Wen Congyang wrote:
>> In colo mode, secondary vm is running, so VM_ENTRY_INTR_INFO may
>> valid before restoring vmcs. If there is no pending event after
>> restoring vm, we should clear it.
>>
>> Signed-off-by: Wen Congyang <wency@cn.fujitsu.com>
>>
>> Also clear pending software exceptions.
>> Copy the fix to SVM as well.
>>
>> Signed-off-by: Tim Deegan <tim@xen.org>
>>
>> vmx part:
>> Cc: Jun Nakajima <jun.nakajima@intel.com>
>> Acked-by: Kevin Tian <kevin.tian@intel.com>
>>
>> svm part:
>> Cc: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
>> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
>> ---
>> xen/arch/x86/hvm/svm/svm.c | 15 ++++++++-------
>> xen/arch/x86/hvm/vmx/vmx.c | 25 ++++++++++++-------------
>> 2 files changed, 20 insertions(+), 20 deletions(-)
>>
>> diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c
>> index b5188e6..053e511 100644
>> --- a/xen/arch/x86/hvm/svm/svm.c
>> +++ b/xen/arch/x86/hvm/svm/svm.c
>> @@ -321,16 +321,17 @@ static int svm_vmcb_restore(struct vcpu *v, struct hvm_hw_cpu *c)
>> vmcb_set_h_cr3(vmcb, pagetable_get_paddr(p2m_get_pagetable(p2m)));
>> }
>> - if ( c->pending_valid )
>> + if ( c->pending_valid &&
>> + hvm_event_needs_reinjection(c->pending_type, c->pending_vector) )
>> {
>> gdprintk(XENLOG_INFO, "Re-injecting %#"PRIx32", %#"PRIx32"\n",
>> c->pending_event, c->error_code);
>> -
>> - if ( hvm_event_needs_reinjection(c->pending_type, c->pending_vector) )
>> - {
>> - vmcb->eventinj.bytes = c->pending_event;
>> - vmcb->eventinj.fields.errorcode = c->error_code;
>> - }
>> + vmcb->eventinj.bytes = c->pending_event;
>> + vmcb->eventinj.fields.errorcode = c->error_code;
>> + }
>> + else
>> + {
>> + vmcb->eventinj.bytes = 0;
>> }
>> vmcb->cleanbits.bytes = 0;
>>
>
> Hi,
> You mention that this 'fix' is just copied for svm. But you have not seen the problem of "VM_ENTRY_INTR_INFO may be valid" (whose svm equivalent is "vmcb->eventinj.bytes is valid").
> My concern is that we should test colo mode for svm first, since, if the problem is never really seen on svm, then fix may not be _necessary_
Agree.
>
> At this point, my problems are with test setups. I can help testing scenarios, but as Wen had mentioned, 'colo testing' might be the way to test.
> So, if I can get some pointers to how I can reproduce the issue at hand, then it would be very helpful.
Currently, only COLO can trigger this problem, and COLO is not ready now. So I think this bugfix is not very important now.
If the COLO is ready, and I will give you the way to trigger this problem.
>
> (Tim had mentioned we could try to simulate it by running a guest that takes lot of faults and save-restore another guest over it. However,
> I am not having much luck following this route. I got a hvm guest to continuously take SW exceptions on all vcpus and tried to save-restore.
> I can't see vmcb->eventinj.bytes containing any valid info.)
I don't understand this way..
If we can trigger this problem by this way, we can verify this patch now.
Thanks
Wen Congyang
>
> Thanks,
> -Aravind.
> .
>
next prev parent reply other threads:[~2014-09-11 6:10 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-05 9:10 [RFC Patch v3 00/18] Some bugfix patches Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 01/18] copy the correct page to memory Wen Congyang
2014-09-08 11:27 ` Ian Campbell
2014-09-08 11:58 ` Andrew Cooper
2014-09-05 9:10 ` [RFC Patch v3 02/18] csum the correct page Wen Congyang
2014-09-08 11:28 ` Ian Campbell
2014-09-05 9:10 ` [RFC Patch v3 03/18] don't zero out ioreq page Wen Congyang
2014-09-05 9:25 ` Paul Durrant
2014-09-05 9:33 ` Wen Congyang
2014-09-05 9:39 ` Paul Durrant
2014-09-05 10:45 ` David Vrabel
2014-09-12 7:33 ` Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 04/18] blktap2: dynamic allocate aio_requests to avoid -EBUSY error Wen Congyang
2014-09-08 11:34 ` Ian Campbell
2014-09-24 18:22 ` Shriram Rajagopalan
2014-09-05 9:10 ` [RFC Patch v3 05/18] blktap2: return the correct dev path Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 06/18] blktap2: use correct way to get free event id Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 07/18] blktap2: don't return negative " Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 08/18] blktap2: use correct way to define array Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 09/18] block-remus: fix memory leak Wen Congyang
2014-09-24 19:37 ` Shriram Rajagopalan
2014-09-25 5:23 ` Wen Congyang
2014-09-25 11:14 ` Shriram Rajagopalan
2014-09-26 2:29 ` Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 10/18] block-remus: pass uuid to the callback td_open Wen Congyang
2014-09-24 19:27 ` Shriram Rajagopalan
2014-09-05 9:10 ` [RFC Patch v3 11/18] block-remus: use correct way to get remus_image Wen Congyang
2014-09-24 19:26 ` Shriram Rajagopalan
2014-09-05 9:10 ` [RFC Patch v3 12/18] block-remus: fix bug in tdremus_close() Wen Congyang
2014-09-24 19:24 ` Shriram Rajagopalan
2014-09-05 9:10 ` [RFC Patch v3 13/18] don't call client_flush() when switching to unprotected mode Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 14/18] pass correct file to qemu if we use blktap2 Wen Congyang
2014-09-08 11:35 ` Ian Campbell
2014-09-05 9:10 ` [RFC Patch v3 15/18] support blktap remus in xl Wen Congyang
2014-09-08 11:39 ` Ian Campbell
2014-09-10 7:19 ` Wen Congyang
2014-09-10 10:04 ` Ian Campbell
2014-09-10 10:36 ` Wen Congyang
2014-09-05 9:10 ` [RFC Patch v3 16/18] update libxl__device_disk_from_xs_be() to support blktap device Wen Congyang
2014-09-08 11:42 ` Ian Campbell
2014-09-09 1:57 ` Wen Congyang
2014-09-11 7:58 ` Wen Congyang
2014-09-12 8:53 ` Wei Liu
2014-09-12 9:03 ` Wen Congyang
2014-09-12 10:35 ` Wei Liu
2014-09-05 9:11 ` [RFC Patch v3 17/18] read nictype from xenstore Wen Congyang
2014-09-08 11:41 ` Ian Campbell
2014-09-05 9:11 ` [RFC Patch v3 18/18] x86/hvm: Always set pending event injection when loading VMC[BS] state Wen Congyang
2014-09-10 15:06 ` Aravind Gopalakrishnan
2014-09-11 6:10 ` Wen Congyang [this message]
2014-09-11 10:35 ` Tim Deegan
2014-09-12 3:14 ` Wen Congyang
2014-09-12 15:43 ` Tim Deegan
2014-09-17 7:56 ` Wen Congyang
2014-09-17 14:29 ` Aravind Gopalakrishnan
2014-09-18 0:05 ` Aravind Gopalakrishnan
2014-09-18 0:05 ` Aravind Gopalakrishnan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54113CBB.1030105@cn.fujitsu.com \
--to=wency@cn.fujitsu.com \
--cc=Ian.Campbell@citrix.com \
--cc=Ian.Jackson@eu.citrix.com \
--cc=aravind.gopalakrishnan@amd.com \
--cc=eddie.dong@intel.com \
--cc=jun.nakajima@intel.com \
--cc=laijs@cn.fujitsu.com \
--cc=suravee.suthikulpanit@amd.com \
--cc=tim@xen.org \
--cc=xen-devel@lists.xen.org \
--cc=yanghy@cn.fujitsu.com \
--cc=yunhong.jiang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.