QUESTION: reboot.c and X86-64 architectures

From: Miles Fidelman
Date: Mon Apr 02 2012 - 13:56:00 EST


Hello Folks,

I hope this is an appropriate question here, I've exhausted other resources:

I've recently migrated from running a 32bit kernel to a 64bit one (specifically Debian Lenny 32bit environment to 2.6.32-5-xen-amd64 on top of xen-4.0-amd64 hypervisor build).

This is a somewhat older, and apparently quirky, hardware box. I've found that the only way to reboot it, short of power cycling, is jumping through the bios - using the "reboot=bios" kernel option at boot time works just fine for an X86_32 kernel. But... this doesn't work with the 64bit kernel.

Pouring through both the documentation and the code for linux <http://lxr.linux.no/linux+*/>/arch <http://lxr.linux.no/linux+*/arch>/x86 <http://lxr.linux.no/linux+*/arch/x86>/kernel <http://lxr.linux.no/linux+*/arch/x86/kernel>/reboot.c <http://lxr.linux.no/linux+*/arch/x86/kernel/reboot.c> yields the very specific admonition "bios Reboot by jumping through the BIOS (only for X86_32)", and the code seems to support this (though I haven't quite waded through all the paths that might execute machine_real_restart).

None of the other available command line options seem to work with this hardware, which leads to two questions:

1. What's the logic behind this? Why not enable a bios reboot for 64bit kernels?

2. Anybody know a workaround, short of patching and compiling a custom kernel? (Note: None of the available command line options seem to work on
this particular box/bios combination, and kexec-reboot is not available for this combination of kernel and hypervisor).

Thank you very much,

Miles Fidelman

--
In theory, there is no difference between theory and practice.
In practice, there is. .... Yogi Berra


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/