>>> On 12.02.16 at 13:57, <tleng...@novetta.com> wrote:
> On Feb 12, 2016 02:12, "Jan Beulich" <jbeul...@suse.com> wrote:
>>
>> >>> On 12.02.16 at 01:22, <tleng...@novetta.com> wrote:
>> > Sending the dr7 register during vm_events is useful for various
> applications,
>> > but the current way the register value is gathered is incorrent. In this
>> > patch
>> > we extend vmx_vmcs_save so that we get the correct value.
>> >
>> > Suggested-by: Andrew Cooper <andrew.coop...@citrix.com>
>>
>> Iirc Andrew suggested ...
>>
>> > --- a/xen/arch/x86/hvm/vmx/vmx.c
>> > +++ b/xen/arch/x86/hvm/vmx/vmx.c
>> > @@ -490,6 +490,7 @@ static void vmx_vmcs_save(struct vcpu *v, struct 
>> > hvm_hw_cpu *c)
>> >      __vmread(GUEST_SYSENTER_CS, &c->sysenter_cs);
>> >      __vmread(GUEST_SYSENTER_ESP, &c->sysenter_esp);
>> >      __vmread(GUEST_SYSENTER_EIP, &c->sysenter_eip);
>> > +    __vmread(GUEST_DR7, &c->dr7);
>>
>> ... just when v == current.
>>
> 
> Would that check really be necessary? It would complicate the code not just
> here but the caller would need to be aware too that in that case dr7 can be
> aquired from someplace else. I don't see the harm in just saving dr7 here
> in both cases.

Maybe the solution then is for the suggested if() to have an "else"?
While, as someone said elsewhere, a few more cycles may not be
noticable, why make things slower than they need to be. Plus - what
guarantees that the VMCS field isn't stale while the guest isn't running
(perhaps it got updated but not sync-ed back yet in anticipation for
this to happen during vCPU resume)?

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to