This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


Re: [Xen-devel] memguard_guard_stack()

On 1 May 2006, at 15:09, Keir Fraser wrote:

How many CPUs were in the system? That code path was rather dodgy: the function forcibly enabled interrupts and so a single CPU could nest in that function up to (NR_CPUS-1) times which, if you had say 32 CPUs in the system could certainly cause problems. I don't think it's indicative of a wider problem in Xen -- for most interrupts (ones bound to a guest) we don't even reenable interrupt delivery while handling them, so nested ISRs in Xen are impossible.

I would like to understand exactly what happened in the context of your IPI storm (it *is* the machine restart bug we're talking about, right?) -- if you had much fewer than 32 CPUs then I need to check exactly how much stack an invocation of machine_restart() uses.

Actually the behaviour is worse than I thought -- it was possible to build up stack frames unboundedly (think CPU1 execute machine_restart(), IPIs CPU2 executes machine_restart(), IPIs CPU1 .....). It was essentially a race to see if CPU0 could smp_send_stop() and quiesce the other CPUs before they blew up their stacks. :-)

Case closed.

 -- Keir

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>