[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] [IA64] fix domain_flush_vtlb_all()
# HG changeset patch # User awilliam@xxxxxxxxxxx # Node ID 72caf2612e526b09e8d57ffd526d9b4ae7ea0d13 # Parent 37c8b562a8f10c1f3b59db07e11def70cc2e9e1a [IA64] fix domain_flush_vtlb_all() It should purge software tlb entry of specified vcpu, not current. Signed-off-by: Isaku Yamahata <yamahata@xxxxxxxxxxxxx> --- xen/arch/ia64/xen/vcpu.c | 2 +- xen/arch/ia64/xen/vhpt.c | 20 +++++++++++--------- xen/include/asm-ia64/tlbflush.h | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff -r 37c8b562a8f1 -r 72caf2612e52 xen/arch/ia64/xen/vcpu.c --- a/xen/arch/ia64/xen/vcpu.c Wed Jul 05 09:59:40 2006 -0600 +++ b/xen/arch/ia64/xen/vcpu.c Wed Jul 05 10:03:20 2006 -0600 @@ -2065,7 +2065,7 @@ IA64FAULT vcpu_ptc_e(VCPU *vcpu, UINT64 // architected loop to purge the entire TLB, should use // base = stride1 = stride2 = 0, count0 = count 1 = 1 - vcpu_flush_vtlb_all (); + vcpu_flush_vtlb_all(current); return IA64_NO_FAULT; } diff -r 37c8b562a8f1 -r 72caf2612e52 xen/arch/ia64/xen/vhpt.c --- a/xen/arch/ia64/xen/vhpt.c Wed Jul 05 09:59:40 2006 -0600 +++ b/xen/arch/ia64/xen/vhpt.c Wed Jul 05 10:03:20 2006 -0600 @@ -129,10 +129,8 @@ void vhpt_init(void) } -void vcpu_flush_vtlb_all (void) -{ - struct vcpu *v = current; - +void vcpu_flush_vtlb_all(struct vcpu *v) +{ /* First VCPU tlb. */ vcpu_purge_tr_entry(&PSCBX(v,dtlb)); vcpu_purge_tr_entry(&PSCBX(v,itlb)); @@ -148,6 +146,11 @@ void vcpu_flush_vtlb_all (void) check this. */ } +static void __vcpu_flush_vtlb_all(void *vcpu) +{ + vcpu_flush_vtlb_all((struct vcpu*)vcpu); +} + void domain_flush_vtlb_all (void) { int cpu = smp_processor_id (); @@ -158,12 +161,11 @@ void domain_flush_vtlb_all (void) continue; if (v->processor == cpu) - vcpu_flush_vtlb_all (); + vcpu_flush_vtlb_all(v); else - smp_call_function_single - (v->processor, - (void(*)(void *))vcpu_flush_vtlb_all, - NULL,1,1); + smp_call_function_single(v->processor, + __vcpu_flush_vtlb_all, + v, 1, 1); } } diff -r 37c8b562a8f1 -r 72caf2612e52 xen/include/asm-ia64/tlbflush.h --- a/xen/include/asm-ia64/tlbflush.h Wed Jul 05 09:59:40 2006 -0600 +++ b/xen/include/asm-ia64/tlbflush.h Wed Jul 05 10:03:20 2006 -0600 @@ -11,7 +11,7 @@ */ /* Local all flush of vTLB. */ -void vcpu_flush_vtlb_all (void); +void vcpu_flush_vtlb_all(struct vcpu *v); /* Local range flush of machine TLB only (not full VCPU virtual TLB!!!) */ void vcpu_flush_tlb_vhpt_range (u64 vadr, u64 log_range); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |