IMO you're too pesimistic. kexec was working on arm on other devices even with earlier kernels. I doubt there was any big development except keeping up with kernel changes. So you did expect success on first try?
Well, even if solca was luckier with recent kernel, it may still be something trivial or relatively easy. And even kexecing 2.6.21 from 2.6.27 is not much worse as long as diablo kernel runs and system boots.
It may be safer to run it right after boot, not at shutdown time. At boot time less hardware is initialized to unknown state. But anyway I tried similar experiment directly from linuxrc in initfs even before dsme bme etc is started but with same result, it hangs and powers off after some time.
would be really nice for many reasons but I'm not sure it is strictly needed and would do miracles. I doubt NOLO could load kernel from mmc (or jffs2) anyway. And BTW if linux kernel/kexec is too heavy one could always replace the kernel with something easier (like uboot?), linux kernel entry point is documented so one can start there.
Here are my speculations why it doesn't work with diablo 2.6.21 kernel: - newer kexec userspace loader is incompatible with older kexec kernel code, going to earlier versions could help
- hardware is not initialized to same state so drivers in second kernel get confused, stripping drivers from first kernel could help. Also if kexec calls drivers in first kernel to stop the hardware before jumping into second kernel there may be some bugs there since this may not be used in normal situation at all. Or it may stop too much, one example is video driver, framebuffer is initialized in bootloader and linux does not mess with it too much at startup time to not to disturb boot logo but the driver shutdown code may turn off too much.
But since solca got success with recent kernel we may be quite lucky and it is not so bad. My first random guess is the DSP since it is most probably not touched by recent kernels at all (unlike with 2.6.21). At least I think dspgateway is not present/enabled/working in recent kernels (?). But it can be anything else too.
Anyway, the point of my post is that there is a lot of ideas to try before giving up.
As for watchdog, there should be plenty of time. I takes long time before it powers itself off. IIRC the retu watchdog is set to ~60 seconds and is kicked every 5 seconds or so.