|
|
|
|
|
|
|
|
|
|
xen-devel
[Xen-devel] Re: [Xen-changelog] [xen-unstable] xen: Split domain_flags i
On Fri, 2007-03-30 at 16:10 -0700, Xen patchbot-unstable wrote:
> # HG changeset patch
> # User kfraser@xxxxxxxxxxxxxxxxxxxxx
> # Date 1175177666 -3600
> # Node ID 4b13fc910acf0019c27cbae35181433b381e88d1
> # Parent 31f20aaac8188bc1366b80e55e47b328db425180
> xen: Split domain_flags into discrete first-class fields in the
> domain structure. This makes them quicker to access, and simplifies
> domain pause and checking of runnable status.
> diff -r 31f20aaac818 -r 4b13fc910acf xen/common/domain.c
> --- a/xen/common/domain.c Thu Mar 29 13:29:24 2007 +0100
> +++ b/xen/common/domain.c Thu Mar 29 15:14:26 2007 +0100
> @@ -262,8 +264,12 @@ void domain_kill(struct domain *d)
> {
> domain_pause(d);
>
> - if ( test_and_set_bit(_DOMF_dying, &d->domain_flags) )
> + /* Already dying? Then bail. */
> + if ( xchg(&d->is_dying, 1) )
> return;
> +
> + /* Tear down state /after/ setting the dying flag. */
> + smp_wmb();
>
> gnttab_release_mappings(d);
> domain_relinquish_resources(d);
You're now doing xchg() on a 1-byte variable, which does not work on
PowerPC.
This is an interface problem: using the interface in a way that works on
x86 fails on other architectures. PLEASE let's redefine the interface to
prevent this from happening. In this case, that means replacing the
xchg() macro with
static inline xchg(atomic_t *ptr, atomic_t val)
and changing the type of 'is_dying'.
--
Hollis Blanchard
IBM Linux Technology Center
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Re: [Xen-changelog] [xen-unstable] xen: Split domain_flags into discrete first-class fields in the,
Hollis Blanchard <=
|
|
|
|
|