[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-ia64-devel] Re: [PATCH]: ptc.ga for SMP-g
Le Jeudi 30 Mars 2006 10:42, Tian, Kevin a écrit : > From: Tristan Gingold > > >Sent: 2006年3月30日 16:31 > > > >Le Mardi 28 Mars 2006 04:04, Isaku Yamahata a écrit : > >> Hi Tristan. > >> > >> > >> + /* Purge tc entry. > >> + Can we do this directly ? Well, this is just a > >> + single atomic write. */ > >> + vcpu_purge_tr_entry(&PSCBX(v,dtlb)); > >> + vcpu_purge_tr_entry(&PSCBX(v,itlb)); > >> > >> These aren't SMP-safe because dtlb isn't read atomically. > >> From vcpu_translate() > >> > >> #define vcpu_match_tr_entry(_trp,_ifa,_rid) \ > >> ((_trp->p && (_trp->rid==_rid) && (_ifa >= _trp->vadr) && \ > >> (_ifa < (_trp->vadr + (1L<< _trp->ps)) - 1))) > >> > >> trp = &vcpu->arch.dtlb; > >> if (/* is_data && */ vcpu_match_tr_entry(trp,address,rid)) { > >> <<<<<<<<<<<<If other processor executes > >> vcpu_purge_tr_entry(&PSCBX(v,dtlb)) > > > >here, > > > >> then a disaster will happen > > > >Can you elaborate ? Do you have a disaster scenario ? > >vcpu_purge_tr_entry only clears the p bit. > > I think it's not safe for one vcpu to operate date structure on another > vcpu. For example, current vcpu is doing vcpu_match_tr_entry. Just after > checking _trp->p, then another vcpu invokes vcpu_purge_tr_entry to clear > _trp->p. In this case, vcpu_match_tr_entry should return false however it > may return true based on old knowledge since the whole check is not atomic. This is as if the purge was done a few cycles after the checks. > The preferred way is to only purge entry on its own context by sending IPI. > For example, you can put vcpu_purge_tr_entry into ptc_ga_remote_func > which will execute in right vcpu owning that entry. Ok for this scheme. I think there are two methods: * either doing all the work with IPI (purge and ptc.l) * or doing all the work locally (writing into other vcpu and ptc.ga) I don't know which one is the best. The main problem with IPI is migration. However, currently migration doesn't work well. I think it is ok to migrate a vcpu from CPU X to CPU Y, but we don't support migrating back from CPU Y to CPU X. Tristan. _______________________________________________ Xen-ia64-devel mailing list Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-ia64-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |