On 09/05/2019 17:19, Mathieu Tarral wrote:
> Le mardi, mai 7, 2019 2:01 PM, Mathieu Tarral <mathieu.tar...@protonmail.com> 
> a écrit :
>
>>> Given how many EPT flushing bugs I've already found in this area, I 
>>> wouldn't be surprised if there are further ones lurking.  If it is an EPT 
>>> flushing bug, this delta should make it go away, but it will come with a 
>>> hefty perf hit.
>>>
>>> diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
>>> index 283eb7b..019333d 100644
>>> --- a/xen/arch/x86/hvm/vmx/vmx.c
>>> +++ b/xen/arch/x86/hvm/vmx/vmx.c
>>> @@ -4285,9 +4285,7 @@ bool vmx_vmenter_helper(const struct cpu_user_regs 
>>> *regs)
>>>              }
>>>          }
>>>
>>> -        if ( inv )
>>> -            __invept(inv == 1 ? INVEPT_SINGLE_CONTEXT : INVEPT_ALL_CONTEXT,
>>> -                     inv == 1 ? single->eptp          : 0);
>>> +        __invept(INVEPT_ALL_CONTEXT, 0);
>>>      }
>>>
>>>   out:
>> I can give this a try, and see if it resolves the problem !
> Just tested, on Xen 4.12.0, and the bug is still here.
> Windows 7 is having BSODs with 4 VCPUs.
> I didn't noticed a hefty performance impact though.
>
> Do we have other caches to invalidate ?
> Something else that i should test ?
>
> I don't feel comfortable digging into Xen's code, especially for something as 
> complicated as page table and memory management,
> increased by the complexity of altp2m.
> What i can do however, is test your ideas and patches and report the 
> information I can gather on this issue.
>
> Note: I tested with the latest commits on Drakvuf/master, especially:
> "Add a VM pause for shadow copy refresh operation"
> https://github.com/tklengyel/drakvuf/pull/626
>
> @tamas, did you made this patch to fix these kind of race conditions issue 
> that i'm reporting ?
> Or was it totally unrelated ?

With the above change in place and BSODs still happening, I'm fairly
convinced that it not a TLB flushing issue.

Therefore, the conclusion to draw is that it is a logical bug somewhere.

First of all - ensure you are using up-to-date microcode.  The number of
errata which have been discovered by people associated with the Xen
community is large.

The microcode is available from
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/ and
https://andrewcoop-xen.readthedocs.io/en/latest/admin-guide/microcode-loading.html
is some documentation I prepared earlier.

Beyond that, I think it would help to know exactly how libvmi is
manipulating the guest.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to