* [PATCH] nestedsvm: reduce TLB flushes
@ 2011-05-18 15:26 Christoph Egger
0 siblings, 0 replies; only message in thread
From: Christoph Egger @ 2011-05-18 15:26 UTC (permalink / raw)
To: xen-devel@lists.xensource.com
[-- Attachment #1: Type: text/plain, Size: 575 bytes --]
Reduce TLB flushes:
1. When we update the cr3 during VMRUN/VMEXIT emulation
we toggle between n1asid and n2asid forth and back
=> no TLB flush needed
2. Only flush n1asid or n2asid depending on vcpu guest mode
and not both unconditionally.
Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
--
---to satisfy European Law for business letters:
Advanced Micro Devices GmbH
Einsteinring 24, 85689 Dornach b. Muenchen
Geschaeftsfuehrer: Alberto Bozzo, Andrew Bowd
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632
[-- Attachment #2: xen_nh_asid.diff --]
[-- Type: text/plain, Size: 906 bytes --]
diff -r 0e45a2e91f17 xen/arch/x86/hvm/svm/svm.c
--- a/xen/arch/x86/hvm/svm/svm.c Thu May 12 14:35:58 2011 +0200
+++ b/xen/arch/x86/hvm/svm/svm.c Wed May 18 17:26:16 2011 +0200
@@ -450,7 +452,19 @@ static void svm_update_guest_cr(struct v
break;
case 3:
vmcb_set_cr3(vmcb, v->arch.hvm_vcpu.hw_cr[3]);
- hvm_asid_flush_vcpu(v);
+ if ( !nestedhvm_enabled(v->domain) ) {
+ hvm_asid_flush_vcpu(v);
+ break;
+ }
+ if ( nestedhvm_vmswitch_in_progress(v) )
+ /* During VMRUN/VMEXIT emulation we toggle between
+ * n1asid and n2asid. */
+ break;
+
+ if ( nestedhvm_vcpu_in_guestmode(v) )
+ hvm_asid_flush_vcpu_asid(&vcpu_nestedhvm(v).nv_n2asid);
+ else
+ hvm_asid_flush_vcpu_asid(&v->arch.hvm_vcpu.n1asid);
break;
case 4:
value = HVM_CR4_HOST_MASK;
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2011-05-18 15:26 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-05-18 15:26 [PATCH] nestedsvm: reduce TLB flushes Christoph Egger
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.