[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] hap_invlpg() vs INVLPGA

On 29/01/16 14:57, Egger, Christoph wrote:
> On 29/01/16 14:24, Jan Beulich wrote:
>> Christoph,
>> in commit dd6de3ab99 ("Implement Nested-on-Nested") you added
>> code to hap_invlpg() supposedly emulating INVLPGA. I've been
>> stumbling across this a number of times in the past, not being able
>> to make the connection between (a) VMX/EPT and INVLPGA and
>> (b) SVM's INVLPGA intercept and this function.
> When you boot Windows 7 as L1 guest and XP-Mode as L2 guest then
> L2 guest uses INVLPG instruction to invalidate a page and L1 guest
> handles this via using INVLPGA instruction.
> The INVLPG intercept flushes the nested hap p2m which is effectively
> a TLB flush to the L1 guest.

... actually to the L2 guest. Sorry for the typo.

> Then this intercept is injected into L1 guest.
> The INVLPGA instruction enforces a new ASID.
> If the nested hap p2m is NULL then p2m_flush() should effectively
> be a noop but it may not crash the guest.
> What I don't remember is if Windows 7 must be 32bit or 64bit
> to reproduce this.
> Christoph
>> I'm asking in the context of a reported crash resulting from the
>> nv_p2m field being NULL during emulation of an INVLPG instruction
>> in a guest with nesting enabled but - afaict - not actually used. Of
>> course I could submit a patch adding a NULL check here, but I'd
>> like to understand what this code is for, and hence whether the
>> better fix wouldn't be to get rid of it.
>> Jan

Amazon Development Center Germany GmbH
Berlin - Dresden - Aachen
main office: Krausenstr. 38, 10117 Berlin
Geschaeftsfuehrer: Dr. Ralf Herbrich, Christian Schlaeger
Ust-ID: DE289237879
Eingetragen am Amtsgericht Charlottenburg HRB 149173 B

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.