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

Re: [Xen-ia64-devel] [PATCH][RFC]copy_from/to_guest



Hi Yamahata-san,

Thanks to point out.
I'll take care for SMP-safe from now on.

Actually vcpu_itc_no_srlz() in ia64_map_hypercall_param() is called
only when a guest requests __HYPERVISOR_grant_table_op. I think the
race condition can hardly occur.

So I'd prefer to wait for xencomm rather than fix it now.

Thanks,
Kouya

Isaku Yamahata writes:
 > Hi.
 > 
 > Sorry for delayed point out.
 > At first I thought your hack would be replaced with xencomm.
 > However it seems to take a while to merge xencomm for IA64 so that
 > I decided to point it out now.
 > 
 > 
 > On Fri, Aug 11, 2006 at 07:01:10PM +0900, Kouya SHIMURA wrote:
 > Content-Description: message body text
 > > diff -r fc6c3d866477 xen/arch/ia64/xen/vcpu.c
 > > --- a/xen/arch/ia64/xen/vcpu.c     Wed Aug 09 10:32:23 2006 -0600
 > > +++ b/xen/arch/ia64/xen/vcpu.c     Fri Aug 11 18:35:31 2006 +0900
 > > @@ -2215,3 +2215,27 @@ IA64FAULT vcpu_ptr_i(VCPU *vcpu,UINT64 v
 > >  
 > >    return IA64_NO_FAULT;
 > >  }
 > > +
 > > +int ia64_map_hypercall_param(void)
 > > +{
 > > +  struct vcpu *v = current;
 > > +  struct domain *d = current->domain;
 > > +  u64 vaddr = v->arch.hypercall_param.va & PAGE_MASK;
 > > +  volatile pte_t* pte;
 > > +
 > > +  if (v->arch.hypercall_param.va == 0)
 > > +          return FALSE;
 > > +  pte = lookup_noalloc_domain_pte(d, v->arch.hypercall_param.pa1);
 > > +  if (!pte || !pte_present(*pte))
 > > +          return FALSE;
 > > +  vcpu_itc_no_srlz(v, 2, vaddr, pte_val(*pte), -1UL, PAGE_SHIFT);
 > > +  if (v->arch.hypercall_param.pa2) {
 > > +          vaddr += PAGE_SIZE;
 > > +          pte = lookup_noalloc_domain_pte(d, v->arch.hypercall_param.pa2);
 > > +          if (pte && pte_present(*pte)) {
 > > +                  vcpu_itc_no_srlz(v, 2, vaddr, pte_val(*pte), -1UL, 
 > > PAGE_SHIFT);
 > > +          }
 > > +  }
 > > +  ia64_srlz_d();
 > > +  return TRUE;
 > > +}
 > 
 > 
 > This isn't SMP-safe. Since the p2m table is locklesss,
 > another vcpu might change the p2m table entry after checking pte_present()
 > but before vcpu_itc_no_srlz(). You must be aware of it.
 > 
 > -- 
 > yamahata


_______________________________________________
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®.