[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [Xen-ia64-devel] Some things to be considered for ptc.ga emulation



> Tristan Gingold
>Sent: 2006?4?6? 15:28
>+void vhpt_flush_address_remote(int cpu,
>+                             unsigned long vadr, unsigned long addr_range)
>+{
>+      while ((long)addr_range > 0) {
>+              /* Get the VHPT entry.  */
>+              unsigned int off = ia64_thash(vadr) - VHPT_ADDR;
>+              volatile struct vhpt_lf_entry *v;
>+              v =__va(per_cpu(vhpt_paddr, cpu) + off);
>+              v->ti_tag = INVALID_TI_TAG;
>               addr_range -= PAGE_SIZE;
>               vadr += PAGE_SIZE;
>       }

I have a concern about this,
This method seems be Ok if only modifying v->ti_tag, which is an atomic
operation on bus.
The possible optimization maybe check tag before setting it to invalid,
(this is unreasonable to purge a irrelevant tlb mapping)
There is a time between checking tag and setting it to invalid, this may
cause race condition.

Thanks,
Anthony

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.