direct-io.hg

changeset 12367:b7ffbec0e307

If domain_crash_synchronous() is called in the context of a multicall,
the (physical) CPU this was executing on did not get its multicall
state cleared and would reject any further multicalls, likely leading
to crashing dom0 at some point.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
author kfraser@localhost.localdomain
date Fri Nov 10 17:47:15 2006 +0000 (2006-11-10)
parents f6b7ae6ed504
children fda15861731e
files xen/common/domain.c
line diff
     1.1 --- a/xen/common/domain.c	Fri Nov 10 17:35:09 2006 +0000
     1.2 +++ b/xen/common/domain.c	Fri Nov 10 17:47:15 2006 +0000
     1.3 @@ -22,6 +22,7 @@
     1.4  #include <xen/delay.h>
     1.5  #include <xen/shutdown.h>
     1.6  #include <xen/percpu.h>
     1.7 +#include <xen/multicall.h>
     1.8  #include <asm/debugger.h>
     1.9  #include <public/sched.h>
    1.10  #include <public/vcpu.h>
    1.11 @@ -256,6 +257,10 @@ void __domain_crash(struct domain *d)
    1.12  void __domain_crash_synchronous(void)
    1.13  {
    1.14      __domain_crash(current->domain);
    1.15 +
    1.16 +    /* Flush multicall state before dying. */
    1.17 +    this_cpu(mc_state).flags = 0;
    1.18 +
    1.19      for ( ; ; )
    1.20          do_softirq();
    1.21  }