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

Re: [XenPPC] [PATCH] Fix xchg api to for Xen-unstable



On Wed, 2007-04-04 at 08:57 -0400, Jimi Xenidis wrote:
> hmm, how did this ever work?!
> I your problem with a direct caller of __xchg() or is this thru the  
> macro xchg()?

The caller is in common/domain.c @ line 310:

/* Already dying? Then bail. */
    if ( xchg(&d->is_dying, 1) )
    {
        domain_unpause(d);
        return;
    }


The current macro matches that one in x86. But the parameters we have
for __xchg are not in the same order. So one has to change to be right.

> 
> I notice we have the macro wrong (at least in my copy of xen source):
>    #define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v), 
> (ptr),sizeof(*(ptr))))
> 
> where it should be (from Linux):
>    #define xchg(ptr,x)                                                        
>      \
>    ({                                                                      \
>       __typeof__(*(ptr)) _x_ = (x);                                        \
>       (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, sizeof(* 
> (ptr))); \
>    })
> 
> Will that change fix your issue?

Doubtful..see use of code above.

> I'd rather not change __xchg().

Ok .. I've attached a patch to this email with that change instead of
changing __xchg()
> 
> -JX
> 
> On Apr 4, 2007, at 2:04 AM, Jerone Young wrote:
> 
> > This fixes the api for __xchg function in system.h so that PPC Xen can
> > build correctly in Xen unstable. This is the same API used in the  
> > __xchg
> > on x86.
> >
> > Signed-off-by: Jerone Young <jyoung5@xxxxxxxxxx>
> >
> >
> > diff -r 7e431ea834a8 xen/include/asm-powerpc/system.h
> > --- a/xen/include/asm-powerpc/system.h  Tue Apr 03 13:22:37 2007 +0100
> > +++ b/xen/include/asm-powerpc/system.h  Wed Jan 29 05:37:30 2031 -0600
> > @@ -73,7 +73,7 @@ extern void __xchg_called_with_bad_point
> >  extern void __xchg_called_with_bad_pointer(void);
> >
> >  static __inline__ unsigned long
> > -__xchg(volatile void *ptr, unsigned long x, int size)
> > +__xchg(unsigned long x, volatile void *ptr, int size)
> >  {
> >      switch (size) {
> >      case 4:
> >
> >
> >
> >
> > _______________________________________________
> > Xen-ppc-devel mailing list
> > Xen-ppc-devel@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-ppc-devel
> 


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


 


Rackspace

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