qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Gleb Natapov <gleb@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
	Jordan Justen <jordan.l.justen@intel.com>,
	qemu-devel Developers <qemu-devel@nongnu.org>,
	Dunrong Huang <riegamaths@gmail.com>,
	Hannes Reinecke <hare@suse.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Jordan Justen <jljusten@gmail.com>
Subject: Re: [Qemu-devel] VM can not boot after commit 235e898
Date: Wed, 24 Jul 2013 18:26:41 +0200	[thread overview]
Message-ID: <51F00041.3010005@suse.de> (raw)
In-Reply-To: <20130724161742.GI6029@redhat.com>

On 07/24/2013 06:17 PM, Gleb Natapov wrote:
> On Wed, Jul 24, 2013 at 05:31:14PM +0200, Alexander Graf wrote:
>> On 07/24/2013 05:21 PM, Gleb Natapov wrote:
>>> On Wed, Jul 24, 2013 at 05:16:09PM +0200, Paolo Bonzini wrote:
>>>> Il 24/07/2013 11:58, Alexander Graf ha scritto:
>>>>>>> No QEMU or kvm crashes, no error message printed, I mean it just hangs, even no BIOS information are printed.
>>>>>>> And "top" shows QEMU consumes 100% cpu.
>>>>>>>
>>>>>>> When I define DEBUG_KVM in kvm-all.c, and run QEMU(this time I boot a normal OS disk),
>>>>>>> # x86_64-softmmu/qemu-system-x86_64 -enable-kvm -hda /mnt/nfs/Images/debian-append.img
>>>>>>> kvm_init_vcpu
>>>>>>> kvm_cpu_exec()
>>>>>>> handle_io
>>>>>>> handle_io
>>>>>>> handle_io
>>>>>>> handle_io
>>>>>>>
>>>>>>> Only 4 debug messages(handle_io) are printed, then nothing is shown, and "top" shows QEMU process uses 100% CPU.
>>>>> After this we're running in an endless loop of:
>>>>>
>>>>>   qemu-system-x86-9298  [003] ...1 162090.918845: kvm_emulate_insn: f0000:c489:66 ea 91 c4 0f 00 08 00 (prot16)
>>>>>   qemu-system-x86-9298  [003] d..2 162090.918846: kvm_entry: vcpu 0
>>>>>
>>>>>    (qemu) x /i $pc
>>>>>    0x00000000000fc489:  ljmpl  $0x8,$0xfc491
>>>>>
>>>>> With current master, qemu-system-x86_64 -enable-kvm is broken on at least 3.7 kernels (openSUSE 12.3).
>>>>>
>>>>> Gleb, I don't remember all the glorious details of ljmpl, but would it have to raise an MMIO request for a read-only memory slot which it fails to do?
>>>> The point of KVM_CAP_READONLY_MEM should be that it doesn't.
>>>>
>>> Yes, it should not. Can you provide complete trace of kvm and kvmmmu
>>> event up until failure?
>> Sure! These are all trace events up to the loop that I was able to
>> fetch from the "kvm" and "kvmmmu" event bucket in
>> /sys/kernel/debug/tracing.
>>
> You should start using trace-cmd :) It even disassembles for you.
>
>>   qemu-system-x86-13150 [000] d..2 185370.441825: kvm_entry: vcpu 0
>>   qemu-system-x86-13150 [000] d..2 185370.441826: kvm_exit: reason EXCEPTION_NMI rip 0xc486 info 0 80000b0d
>>   qemu-system-x86-13150 [000] ...1 185370.441826: kvm_emulate_insn: f0000:c486:0f 22 c0 (real)
> This mov CR0 that sets PE bit.
>
>>   qemu-system-x86-13150 [000] d..2 185370.441829: kvm_entry: vcpu 0
>>   qemu-system-x86-13150 [000] ...1 185370.441830: kvm_emulate_insn: f0000:c489:66 ea 91 c4 0f 00 08 00 (prot16)
> Here jmp is emulated because vcpu state is invalid, but for some reason
> emulation does not fail and does not succeed. Never saw such thing

It works just fine with older QEMU:

  qemu-system-x86-9448  [001] d..2 162748.223935: kvm_exit: reason 
IO_INSTRUCTION rip 0xc471 info 920040 0
  qemu-system-x86-9448  [001] ...1 162748.223936: kvm_pio: pio_write at 
0x92 size 1 count 1
  qemu-system-x86-9448  [001] ...1 162748.223936: kvm_userspace_exit: 
reason KVM_EXIT_IO (2)
  qemu-system-x86-9448  [001] d..2 162748.223939: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] d..2 162748.223940: kvm_exit: reason 
EXCEPTION_NMI rip 0xc473 info 0 80000b0d
  qemu-system-x86-9448  [001] ...1 162748.223942: kvm_emulate_insn: 
f0000:c473:2e 0f 01 1e e0 d3 (real)
  qemu-system-x86-9448  [001] d..2 162748.223945: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] d..2 162748.223946: kvm_exit: reason 
EXCEPTION_NMI rip 0xc479 info 0 80000b0d
  qemu-system-x86-9448  [001] ...1 162748.223947: kvm_emulate_insn: 
f0000:c479:2e 0f 01 16 a0 d3 (real)
  qemu-system-x86-9448  [001] d..2 162748.223948: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] d..2 162748.223948: kvm_exit: reason 
EXCEPTION_NMI rip 0xc47f info 0 80000b0d
  qemu-system-x86-9448  [001] ...1 162748.223950: kvm_emulate_insn: 
f0000:c47f:0f 20 c0 (real)
  qemu-system-x86-9448  [001] d..2 162748.223951: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] d..2 162748.223951: kvm_exit: reason 
EXCEPTION_NMI rip 0xc486 info 0 80000b0d
  qemu-system-x86-9448  [001] ...1 162748.223952: kvm_emulate_insn: 
f0000:c486:0f 22 c0 (real)
  qemu-system-x86-9448  [001] d..2 162748.223955: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] ...1 162748.223956: kvm_emulate_insn: 
f0000:c489:66 ea 91 c4 0f 00 08 00 (prot16)
  qemu-system-x86-9448  [001] d..2 162748.223959: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] ...1 162748.223960: kvm_emulate_insn: 
0:fc491:b8 10 00 00 00 (prot32)
  qemu-system-x86-9448  [001] d..2 162748.223961: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] ...1 162748.223961: kvm_emulate_insn: 
0:fc496:8e d8 (prot32)
  qemu-system-x86-9448  [001] d..2 162748.223963: kvm_entry: vcpu 0
  qemu-system-x86-9448  [001] ...1 162748.223964: kvm_emulate_insn: 
0:fc498:8e c0 (prot32)
  qemu-system-x86-9448  [001] d..2 162748.223965: kvm_entry: vcpu 0
[...]

> before. Are you saying configuring BIOS memslot differently solves the
> problem?

Git bisect pointed to the commit mentioned in this email. The following 
patch also gets me a working guest again:

diff --git a/kvm-all.c b/kvm-all.c
index 4fb4ccb..deca9e5 100644
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1455,7 +1455,7 @@ int kvm_init(void)
          s->irq_set_ioctl = KVM_IRQ_LINE_STATUS;
      }

-#ifdef KVM_CAP_READONLY_MEM
+#if 0 //def KVM_CAP_READONLY_MEM
      kvm_readonly_mem_allowed =
          (kvm_check_extension(s, KVM_CAP_READONLY_MEM) > 0);
  #endif


Alex

  reply	other threads:[~2013-07-24 16:26 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-04  3:47 [Qemu-devel] VM can not boot after commit 235e898 Dunrong Huang
2013-06-04  6:41 ` Jordan Justen
2013-06-04  7:46   ` Dunrong Huang
2013-06-04  6:47 ` Paolo Bonzini
2013-06-04  7:47   ` Dunrong Huang
2013-06-04  7:51     ` Gleb Natapov
2013-06-04  8:26       ` Dunrong Huang
2013-06-04 17:03         ` Jordan Justen
2013-06-05  2:44           ` Dunrong Huang
2013-06-05  7:34             ` Dunrong Huang
2013-07-24  9:58             ` Alexander Graf
2013-07-24 15:16               ` Paolo Bonzini
2013-07-24 15:21                 ` Gleb Natapov
2013-07-24 15:31                   ` Alexander Graf
2013-07-24 16:17                     ` Gleb Natapov
2013-07-24 16:26                       ` Alexander Graf [this message]
2013-07-24 16:53                         ` Gleb Natapov
2013-07-24 20:25                           ` Alexander Graf
2013-07-25 11:30                             ` Gleb Natapov
2013-07-24 20:34                           ` Andreas Färber

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=51F00041.3010005@suse.de \
    --to=agraf@suse.de \
    --cc=aliguori@us.ibm.com \
    --cc=gleb@redhat.com \
    --cc=hare@suse.de \
    --cc=jljusten@gmail.com \
    --cc=jordan.l.justen@intel.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=riegamaths@gmail.com \
    /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;
as well as URLs for NNTP newsgroup(s).