Signed-off-by: Gianluca Guida <gianluca.guida@eu.citrix.com>
{
struct vcpu *curr = current;
HVMTRACE_2D(INVLPG, curr, /*invlpga=*/ 0, vaddr);
- paging_invlpg(curr, vaddr);
+ if ( paging_invlpg(curr, vaddr) )
+ vpid_sync_vcpu_gva(curr, vaddr);
}
#define CASE_SET_REG(REG, reg) \
void ept_sync_domain(struct domain *d);
+static inline void vpid_sync_vcpu_gva(struct vcpu *v, unsigned long gva)
+{
+ if ( cpu_has_vmx_vpid )
+ __invvpid(0, v->arch.hvm_vmx.vpid, (u64)gva);
+}
+
static inline void vpid_sync_vcpu_all(struct vcpu *v)
{
if ( cpu_has_vmx_vpid )