3/3 This builds on (and is mostly) Nathan's work. I have messed with a few things though. It survives some cpu hotplugging on i386. Nathan, can you give this a look? Do you agree with the general direction? Thanks