On Tue, Jan 22, 2008 at 01:12:12PM +0100, Jan Kiszka wrote:
> Guido Guenther wrote:
> > On Tue, Jan 22, 2008 at 11:11:00AM +0100, Jan Kiszka wrote:
> >> #if defined(TARGET_I386)
> >> void qemu_system_powerdown(void)
> >> {
> >> + if (!pm_state)
> >> + exit(0);
> >> if(pm_state->pmen & PWRBTN_EN) {
> >> pm_state->pmsts |= PWRBTN_EN;
> >> pm_update_sci(pm_state);
> > This totally defeats the "clean shutdown" purpose of system_powerdown.
> > Think of it like:
> > system_powerdown: hint the system to shutdown cleanly
> > SIGTERM: kill the vm
> > This is how things are wired up in libvirt at the moment.
>
> So how to signal a "clean shutdown" to the guest if there is no channel
> for this?
It isn't. It's about what system_powerdown should mean. IMHO it should
be "signal the guest to shut down cleanly".
If the guest can't do that, it simply can't. You can then SIGTERM the
guest after a timeout. Note that even an acpi system might not be able
to shut down since it hangs on a network unmount or it ignores the ACPI
interrupt via kernel commandline or whatever. You can't ever expect a
system to shutdown cleanly, so you need the SIGTERM failsave anyway.
Have a look at e.g. domainShutdown() vs. domainDestroy() in libvirt.
Cheers,
-- Guido
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel