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

Re: [Xen-devel] [PATCH 1/9] Xen Share: Simplified I/O Mechanism



On Tue, 2006-06-06 at 15:35 +1000, Rusty Russell wrote:

>  static inline int get_page(struct page_info *page,
>                             struct domain *domain)
> +{
> +    u32 x, nx, y = page->count_info;
> +    u32 d, nd = page->u.inuse._domain;
> +    u32 _domain = pickle_domptr(domain);
> +
> +    do {
> +        x  = y;
> +        nx = x + 1;
> +        d  = nd;
> +        if ( unlikely((x & PGC_count_mask) == 0) ||  /* Not allocated? */
> +             unlikely((nx & PGC_count_mask) == 0) ) /* Count overflow? */
> +        {
> +         if ( !_shadow_mode_refcounts(domain) )
> +             DPRINTK("Error pfn %lx: rd=%p, od=%p, caf=%08x, taf=%" 
> PRtype_info "\n",
> +                     page_to_pfn(page), domain, unpickle_domptr(d),
> +                     x, page->u.inuse.type_info);
> +         return 0;
> +        }
> +     if ( unlikely(d != _domain) )               /* Wrong owner? */
> +         return try_shared_page(page, domain);
> +        __asm__ __volatile__(
> +            LOCK_PREFIX "cmpxchg8b %3"
> +            : "=d" (nd), "=a" (y), "=c" (d),
> +              "=m" (*(volatile u64 *)(&page->count_info))
> +            : "0" (d), "1" (x), "c" (d), "b" (nx) );
> +    }
> +    while ( unlikely(nd != d) || unlikely(y != x) );
> +
> +    return 1;
> +}

What is the "=c" (d) there for?  And doesn't cmpxchg8b modify the zero
flag---is it necessary to clobber the condition code register?

> diff -r d5f98d23427a xen/include/public/xen.h
> --- a/xen/include/public/xen.h        Tue May 30 10:44:23 2006
> +++ b/xen/include/public/xen.h        Wed May 31 17:39:54 2006
> @@ -64,6 +64,7 @@
>  #define __HYPERVISOR_xenoprof_op          31
>  #define __HYPERVISOR_event_channel_op     32
>  #define __HYPERVISOR_physdev_op           33
> +#define __HYPERVISOR_share_op             33

Sharing no 33?



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


 


Rackspace

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