|
|
|
|
|
|
|
|
|
|
xen-ia64-devel
Re: [Xen-ia64-devel] [RFC] SMP issues
Le Mercredi 14 Juin 2006 07:58, Isaku Yamahata a écrit :
> Hello.
[...]
> - races between global tlb purge and tlb insert
> This is a race between reading/writing vcpu->arch.{d, i}tlb or VHPT
> entry. When a vcpu is about to insert tlb, another vcpu may purge tlb
> cache globally. Inserting tlb (vcpu_itc_no_srlz()) or global tlb purge
> (domain_flush_vtlb_range() and domain_flush_vtlb_all()) can't update
> cpu->arch.{d, i}tlb, VHPT and mTLB. So there is a race here.
> Use sequence lock to avoid this race.
> After inserting tlb entry, check the sequence lock and retry to insert.
> This means that when global tlb purge and tlb insert are issued
> simultaneously, always tlb insert happens after global tlb purge.
>
> There was an attempt to resolve this race by checking only
> vcpu->arch.{d, i}tlb.p bit. However it was incomplete because it doesn't
> take care of VHPT.
I don't agree with the last paragraph.
During a flush, p bit was cleared first and then VHPT.
Races were avoided between Xen reads and Xen writes because the clear is
atomic.
There is no races between VHPT walker and Xen because either the walker reads
before the VHPT clear (as if the reads occured before the ptc.ga) or fails
(as if the access occured after the ptc.ga).
Tristan.
_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel
|
|
|
|
|