On 05/09/2016 02:27 PM, Andrew Cooper wrote: > hap_invlpg() is reachable from the instruction emulator, which means > introspection and tests using hvm_fep can end up here. As such, crashing the > domain is not an appropriate action to take. > > Fixing this involves rearranging the callgraph. > > paging_invlpg() is now the central entry point. It first checks for the > non-canonical NOP case, and calls ino the paging subsystem. If a real flush > is needed, it will call the appropriate handler for the vcpu. This allows the > PV callsites of paging_invlpg() to be simplified. > > The sole user of hvm_funcs.invlpg_intercept() is altered to use > paging_invlpg() instead, allowing the .invlpg_intercept() hook to be removed. > > For both VMX and SVM, the existing $VENDOR_invlpg_intercept() is split in > half. $VENDOR_invlpg_intercept() stays as the intercept handler only (which > just calls paging_invlpg()), and new $VENDOR_invlpg() functions do the > ASID/VPID management. These later functions are made available in hvm_funcs > for paging_invlpg() to use. > > As a result, correct ASID/VPID management occurs for the hvmemul path, even if > it did not originate from an real hardware intercept. > > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com>
Reviewed-by: Boris Ostrovsky <boris.ostrov...@oracle.com> _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel