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

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
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®.