From: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
To: Luca Tettamanti <kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org,
Uri Lublin <uril-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Subject: Re: [BUG][PATCH?] kvm: unhandled wrmsr: 0xc0000083
Date: Sun, 09 Sep 2007 20:13:14 +0300 [thread overview]
Message-ID: <46E429AA.7090004@qumranet.com> (raw)
In-Reply-To: <20070909170718.GA8918-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
Luca Tettamanti wrote:
> Il Sun, Sep 09, 2007 at 03:51:20PM +0300, Avi Kivity ha scritto:
>
>> Luca Tettamanti wrote:
>>
>>>> Actually 0xfff2 is in the middle of an instruction.
>>>>
>>>> I'm guessing an 'out' instruction triggered the reboot, and
>>>> skip_emulated_instruction() added 2 to rip.
>>>>
>>>>
>>> I think you're right; the reset is triggered by an outb to 0x64.
>>>
>>> Now, with this patch:
>>>
>>> diff --git a/qemu/qemu-kvm.c b/qemu/qemu-kvm.c
>>> index 491c32c..722d838 100644
>>> --- a/qemu/qemu-kvm.c
>>> +++ b/qemu/qemu-kvm.c
>>> @@ -706,8 +706,12 @@ static void update_regs_for_sipi(CPUState *env)
>>> static void update_regs_for_init(CPUState *env)
>>> {
>>> - cpu_reset(env);
>>> - load_regs(env);
>>> + if (env->cpu_index) {
>>> + cpu_reset(env);
>>> + load_regs(env);
>>> + } else {
>>> + vcpu_info[env->cpu_index].init = 0;
>>> + }
>>> }
>>>
>>>
>> Can you explain this patch? Why is the boot cpu treated differently?
>> I think the only difference should be the halted flag.
>>
>
> The reset has already been done by qmeu_system_reset(), so it's
> superfluous. Furthermore, the extra reset causes the vmentry failure.
I just committed a patch which prevented .init from being set to 1 on
cpu_index == 0.
> I
> still don't understand which check is failing though...
>
>
These are tough...
>>> the #GP makes more sense than the vm entry failure if the the emulator
>>> is jumping to fff2.
>>>
>> Right. Maybe the processor dropped out of vm86 mode and we're getting #gp
>> on ds.
>>
>
> Ok, the culprit really is skip_emulated_instruction: skipping the
> increment when EIP is 0xfff0 allows rebooting (yes, it's disgusting...)
>
> So I think that there are two different issues:
>
> 1) Extra reset in update_regs_for_init causes vm entry failure due to
> invalid guest state
>
> 2) The emulator is doing something wrong since it used to handle the
> reset just fine
>
It may have been timing. kvm continued to run for a bit, reaching a
non-emulated instruction, and then the reset hit it in the face. The
reset is much quicker now.
We should probably both fix the kernel to handle reset-during-emulation
correctly (one ugly way is to zero the instruction length if we're
setting rip), and fix userspace to delay reset like it used to for
compatibility with older kernels.
--
error compiling committee.c: too many arguments to function
-------------------------------------------------------------------------
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/
prev parent reply other threads:[~2007-09-09 17:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-11 21:25 [BUG][PATCH?] kvm: unhandled wrmsr: 0xc0000083 Luca Tettamanti
[not found] ` <20070811212520.GA26794-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-13 9:09 ` Avi Kivity
[not found] ` <46C01FDA.9000302-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-16 17:23 ` Jindrich Makovicka
2007-08-17 12:11 ` Avi Kivity
[not found] ` <46C59079.6020308-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-17 12:48 ` Jindrich Makovicka
[not found] ` <5f0e26840708170548m5e689df8g9ef633d9c9f5af16-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-19 11:23 ` Avi Kivity
[not found] ` <46C82845.3010908-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 11:41 ` Jindrich Makovicka
2007-08-17 20:14 ` Luca
[not found] ` <68676e00708171314r4be1840bo95f5af50df6f7dfd-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2007-08-19 7:36 ` Avi Kivity
[not found] ` <46C7F2E6.4030808-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-19 19:54 ` Luca Tettamanti
[not found] ` <20070819195458.GA31865-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-08-20 7:58 ` Avi Kivity
[not found] ` <46C949C1.90807-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-03 21:09 ` Luca Tettamanti
[not found] ` <20070903210949.GA19919-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-09-09 12:51 ` Avi Kivity
[not found] ` <46E3EC48.60004-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-09-09 17:07 ` Luca Tettamanti
[not found] ` <20070909170718.GA8918-sTXFmx6KbOnUXq0IF5SVAZ4oGUkBHcCu@public.gmane.org>
2007-09-09 17:13 ` Avi Kivity [this message]
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=46E429AA.7090004@qumranet.com \
--to=avi-atkuwr5tajbwk0htik3j/w@public.gmane.org \
--cc=kronos.it-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=kvm-devel-TtF/mJH4Jtrk1uMJSBkQmQ@public.gmane.org \
--cc=uril-atKUWr5tajBWk0Htik3J/w@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