| 1726 | | SVM_VMCB *pVMCB; |
|---|
| 1727 | | |
|---|
| 1728 | | Log2(("SVMR0InvalidatePage %VGv\n", GCVirt)); |
|---|
| 1729 | | AssertReturn(pVM, VERR_INVALID_PARAMETER); |
|---|
| 1730 | | Assert(pVM->hwaccm.s.svm.fSupported); |
|---|
| 1731 | | |
|---|
| 1732 | | pVMCB = (SVM_VMCB *)pVM->hwaccm.s.svm.pVMCB; |
|---|
| 1733 | | AssertMsgReturn(pVMCB, ("Invalid pVMCB\n"), VERR_EM_INTERNAL_ERROR); |
|---|
| 1734 | | |
|---|
| 1735 | | STAM_COUNTER_INC(&pVM->hwaccm.s.StatFlushPageManual); |
|---|
| 1736 | | SVMInvlpgA(GCVirt, pVMCB->ctrl.TLBCtrl.n.u32ASID); |
|---|
| | 1726 | /* Skip it if a TLB flush is already pending. */ |
|---|
| | 1727 | if (pVM->hwaccm.s.svm.fForceTLBFlush) |
|---|
| | 1728 | { |
|---|
| | 1729 | SVM_VMCB *pVMCB; |
|---|
| | 1730 | |
|---|
| | 1731 | Log2(("SVMR0InvalidatePage %VGv\n", GCVirt)); |
|---|
| | 1732 | AssertReturn(pVM, VERR_INVALID_PARAMETER); |
|---|
| | 1733 | Assert(pVM->hwaccm.s.svm.fSupported); |
|---|
| | 1734 | |
|---|
| | 1735 | pVMCB = (SVM_VMCB *)pVM->hwaccm.s.svm.pVMCB; |
|---|
| | 1736 | AssertMsgReturn(pVMCB, ("Invalid pVMCB\n"), VERR_EM_INTERNAL_ERROR); |
|---|
| | 1737 | |
|---|
| | 1738 | STAM_COUNTER_INC(&pVM->hwaccm.s.StatFlushPageManual); |
|---|
| | 1739 | SVMInvlpgA(GCVirt, pVMCB->ctrl.TLBCtrl.n.u32ASID); |
|---|
| | 1740 | } |
|---|