From: Dor Laor <dor.laor-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "He, Qing" <qing.he-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel <kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: Windows guest reboot failure
Date: Wed, 26 Sep 2007 09:36:13 +0200 [thread overview]
Message-ID: <46FA0BED.1060804@qumranet.com> (raw)
In-Reply-To: <37E52D09333DE2469A03574C88DBF40FA9C256-wq7ZOvIWXbM/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
He, Qing wrote:
> Hi folks,
> I found that Windows guests often fail reboots in current
> kvm.git. Either the guest hangs, or it reports double fault exception
> which causes qemu aborts. This is not shown with -no-kvm-irqchip option.
>
> After some investigation, it seems that this is caused by lack
> of in-kernel components reset. Several windows guests will write RESET
> command to 8042, the keyboard controller. On receiving the command, qemu
> device model will call qemu_system_reset() to reset everything to the
> initial state. However, this mechanism is broken when in-kernel
> components is introduced: qemu doesn't communicate the reset request to
> kvm, so kvm uses stale device state on the next booting, which fails
> reboot.
>
> To resolve this, there are at least two options:
> 1. modify qemu_system_reset(), so that qemu destroys kvm context
> and re-creates.
> 2. introduce a new ioctl, say KVM_RESET, to kvm. On receiving
> this ioctl, the kernel calls reset handlers registered by other
> components (vcpu, lapic, pic, ioapic, pit, etc.), either against vm or
> against each vcpu.
>
> IMO, the first one is easier in modification and maintaining,
> but the second one is closer to qemu logics. Which do you think is more
> appropriate?
>
> Any comment?
>
> Thanks,
> Qing
>
I'm voting for option 2. As you said its closer to qemu's device model
approach and it's also similar to kernel components (*pi*)
save/restore methods. It also minimized qemu changes.
Dor.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
next prev parent reply other threads:[~2007-09-26 7:36 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-26 7:15 Windows guest reboot failure He, Qing
[not found] ` <37E52D09333DE2469A03574C88DBF40FA9C256-wq7ZOvIWXbM/UvCtAeCM4rfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-09-26 7:36 ` Dor Laor [this message]
2007-09-26 8:55 ` Avi Kivity
[not found] ` <46FA1E70.8080802-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-26 11:03 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A02249DBF-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-09-27 9:09 ` Avi Kivity
[not found] ` <46FB733B.4080102-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-27 9:02 ` Dong, Eddie
[not found] ` <10EA09EFD8728347A513008B6B0DA77A022AE425-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org>
2007-09-27 9:22 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46FA0BED.1060804@qumranet.com \
--to=dor.laor-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=dor.laor-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=qing.he-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox