Re: [Qemu-devel] VM can not boot after commit 235e898
On Wed, Jul 24, 2013 at 10:25:49PM +0200, Alexander Graf wrote: On 07/24/2013 06:53 PM, Gleb Natapov wrote: On Wed, Jul 24, 2013 at 06:26:41PM +0200, Alexander Graf wrote: 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 Can you disable emulate_invalid_state on 3.7? I could only find emulate_invalid_guest_state. I suppose you mean that one? :) That one will do :) $ rmmod kvm-intel $ modprobe kvm-intel emulate_invalid_guest_state=n $ ./x86_64-softmmu/qemu-system-x86_64 -nographic -kernel /boot/vmlinuz -append console=ttyS0 -bios pc-bios/bios.bin -enable-kvm QEMU 1.5.50 monitor - type 'help' for more information (qemu) KVM: entry failed, hardware error 0x8021 Yeah, emulate_invalid_guest_state=0 was broken for a while. Can you try applying a4d3326c2de46fd7bcc47d1e8786efccfc152f81 on top of 3.7 and try again with emulate_invalid_guest_state=0? What happens on upstream kernel (works for me obviously :)). kvm-kmod from 3.9 works. Doing backwards bisect to see where it was fixed would be interesting. -- Gleb.
Re: [Qemu-devel] VM can not boot after commit 235e898
On 05.06.2013, at 04:44, Dunrong Huang wrote: On Wed, Jun 5, 2013 at 1:03 AM, Jordan Justen jljus...@gmail.com wrote: On Tue, Jun 4, 2013 at 1:26 AM, Dunrong Huang riegama...@gmail.com wrote: On Tue, Jun 4, 2013 at 3:51 PM, Gleb Natapov g...@redhat.com wrote: On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? I am sure 651eb0f4 does not fix this problem. My test environment is below: * config.log: # head -n 2 config.log # QEMU configure log 2013年 06月 04日 星期二 16:12:59 CST # Configured with: './configure' '--prefix=/root/usr' '--enable-kvm' '--enable-werror' '--enable-debug' '--enable-debug-tcg' '--enable-debug-info' '--enable-sdl' '--enable-gtk' '--enable-virtfs' '--enable-vnc' '--enable-mixemu' '--enable-vnc-tls' '--enable-vnc-sasl' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-vnc-ws' '--enable-curses' '--enable-curl' '--enable-nptl' '--enable-system' '--enable-user' '--enable-linux-user' '--enable-guest-base' '--enable-uuid' '--enable-vde' '--enable-linux-aio' '--enable-cap-ng' '--enable-attr' '--enable-docs' '--enable-vhost-net' '--enable-spice' '--enable-usb-redir' '--enable-smartcard-nss' '--enable-tpm' '--enable-guest-agent' '--target-list=x86_64-softmmu' * kernel version: # uname -a Linux gentoo-company 3.8.2-gentoo #1 SMP Fri Mar 8 11:44:36 CST 2013 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux You were using a 3.8 kernel originally? (Someone mentioned trying a 3.8 kernel, and I think that is when you went to 3.8.) yes, I have been using kernel 3.8.2 lately, not because of Paolo's suggestion. * details of git tree: # git log HEAD --oneline 1713924 gtk: don't use g_object_unref on GdkCursor 41686a9 gtk: don't resize window when enabling scaling 651eb0f fix double free the memslot in kvm_set_phys_mem 25b4833 configure: Report unknown target names more helpfully 6e92f82 configure: Autogenerate default target list 0ded1fe Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging 95669e6 i.MX: Improve EPIT timer code. 6539ed2 exynos4210.c: register rom_mem for memory migration * QEMU command line: x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cdrom /mnt/nfs/Images/ISO/ubuntu-12.04-dvd-amd64.iso FWIW, I've been able to boot the 11.10 iso when booted to a 3.9 kernel. Does it only fail after you boot the OS? If you just run KVM without a disk, so only seabios runs, is it okay? It fails even runing without any parameters, like: x86_64-softmmu/qemu-system-x86_64 -enable-kvm No BIOS information printed, just a black screen is shown. After disable KVM_MEM_READONLY flag like below, VM can boot normally. diff --git a/kvm-all.c b/kvm-all.c index 405480e..c33ba6e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -774,7 +774,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add) mem-memory_size = size; mem-start_addr = start_addr; mem-ram = ram; -mem-flags = kvm_mem_flags(s, log_dirty, readonly_flag); +mem-flags = kvm_mem_flags(s, log_dirty, false); err = kvm_set_user_memory_region(s, mem); if (err) { I can provide more details if needed. I don't think you mentioned how it fails. Does KVM crash? Is an error message printed? Does the VM reset, or just hang? 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
Re: [Qemu-devel] VM can not boot after commit 235e898
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: f: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 0x000fc489: 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. So, even without debugging it, I guess we need a KVM_CAP_READONLY_MEM2 or something like that. Paolo
Re: [Qemu-devel] VM can not boot after commit 235e898
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: f: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 0x000fc489: 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? -- Gleb.
Re: [Qemu-devel] VM can not boot after commit 235e898
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: f: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 0x000fc489: 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. qemu-system-x86-13149 [001] ...1 185370.437938: kvm_set_irq: gsi 8 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437942: kvm_pic_set_irq: chip 1 pin 0 (edge) qemu-system-x86-13149 [001] ...2 185370.437943: kvm_ioapic_set_irq: pin 8 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.437945: kvm_set_irq: gsi 4 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437946: kvm_pic_set_irq: chip 0 pin 4 (edge) qemu-system-x86-13149 [001] ...2 185370.437946: kvm_ioapic_set_irq: pin 4 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.437947: kvm_set_irq: gsi 1 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437947: kvm_pic_set_irq: chip 0 pin 1 (edge) qemu-system-x86-13149 [001] ...2 185370.437948: kvm_ioapic_set_irq: pin 1 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.437948: kvm_set_irq: gsi 12 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437948: kvm_pic_set_irq: chip 1 pin 4 (edge) qemu-system-x86-13149 [001] ...2 185370.437949: kvm_ioapic_set_irq: pin 12 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.437949: kvm_set_irq: gsi 1 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437949: kvm_pic_set_irq: chip 0 pin 1 (edge) qemu-system-x86-13149 [001] ...2 185370.437949: kvm_ioapic_set_irq: pin 1 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.437950: kvm_set_irq: gsi 12 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.437950: kvm_pic_set_irq: chip 1 pin 4 (edge) qemu-system-x86-13149 [001] ...2 185370.437950: kvm_ioapic_set_irq: pin 12 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.438050: kvm_set_irq: gsi 0 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.438051: kvm_pic_set_irq: chip 0 pin 0 (edge) qemu-system-x86-13149 [001] ...2 185370.438051: kvm_ioapic_set_irq: pin 2 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.438052: kvm_set_irq: gsi 0 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.438052: kvm_pic_set_irq: chip 0 pin 0 (edge) qemu-system-x86-13149 [001] ...2 185370.438052: kvm_ioapic_set_irq: pin 2 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13149 [001] ...1 185370.438052: kvm_set_irq: gsi 0 level 0 source 0 qemu-system-x86-13149 [001] ...2 185370.438053: kvm_pic_set_irq: chip 0 pin 0 (edge) qemu-system-x86-13149 [001] ...2 185370.438053: kvm_ioapic_set_irq: pin 2 dst 0 vec=0 (Fixed|physical|edge|masked) qemu-system-x86-13150 [000] ...2 185370.441730: kvm_mmu_get_page: sp gfn 0 4 q0 direct wux !nxe root 0 sync new qemu-system-x86-13150 [000] ...2 185370.441734: kvm_fpu: load qemu-system-x86-13150 [000] d..2 185370.441734: kvm_entry: vcpu 0 qemu-system-x86-13150 [000] d..2 185370.441738: kvm_exit: reason EPT_VIOLATION rip 0xfff0 info 81 0 qemu-system-x86-13150 [000] ...1 185370.441739: kvm_page_fault: address feffc000 error_code 81 qemu-system-x86-13150 [000] ...2 185370.441746: kvm_mmu_get_page: sp gfn 0 3 q0 direct wux !nxe root 0 sync new qemu-system-x86-13150 [000] ...2 185370.441748: kvm_mmu_get_page: sp gfn c 2 q0 direct wux !nxe root 0 sync new qemu-system-x86-13150 [000] ...2 185370.441749: kvm_mmu_get_page: sp gfn fee00 1 q0 direct wux !nxe root 0 sync new qemu-system-x86-13150 [000] d..2 185370.441752: kvm_entry: vcpu
Re: [Qemu-devel] VM can not boot after commit 235e898
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: f: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 0x000fc489: 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 8b0d qemu-system-x86-13150 [000] ...1 185370.441826: kvm_emulate_insn: f: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: f: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 before. Are you saying configuring BIOS memslot differently solves the problem? qemu-system-x86-13150 [000] d..2 185370.441833: kvm_entry: vcpu 0 qemu-system-x86-13150 [000] ...1 185370.441833: kvm_emulate_insn: f:c489:66 ea 91 c4 0f 00 08 00 (prot16) qemu-system-x86-13150 [000] d..2 185370.441834: kvm_entry: vcpu 0 qemu-system-x86-13150 [000] ...1 185370.441835: kvm_emulate_insn: f:c489:66 ea 91 c4 0f 00 08 00 (prot16) qemu-system-x86-13150 [000] d..2 185370.441835: kvm_entry: vcpu 0 qemu-system-x86-13150 [000] ...1 185370.441836: kvm_emulate_insn: f:c489:66 ea 91 c4 0f 00 08 00 (prot16) qemu-system-x86-13150 [000] d..2 185370.441836: kvm_entry: vcpu 0 -- Gleb.
Re: [Qemu-devel] VM can not boot after commit 235e898
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: f: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 0x000fc489: 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 8b0d qemu-system-x86-13150 [000] ...1 185370.441826: kvm_emulate_insn: f: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: f: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 8b0d qemu-system-x86-9448 [001] ...1 162748.223942: kvm_emulate_insn: f: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 8b0d qemu-system-x86-9448 [001] ...1 162748.223947: kvm_emulate_insn: f: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 8b0d qemu-system-x86-9448 [001] ...1 162748.223950: kvm_emulate_insn: f: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 8b0d qemu-system-x86-9448 [001] ...1 162748.223952: kvm_emulate_insn: f: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: f: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 =
Re: [Qemu-devel] VM can not boot after commit 235e898
On Wed, Jul 24, 2013 at 06:26:41PM +0200, Alexander Graf wrote: 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 Can you disable emulate_invalid_state on 3.7? What happens on upstream kernel (works for me obviously :)). -- Gleb.
Re: [Qemu-devel] VM can not boot after commit 235e898
On 07/24/2013 06:53 PM, Gleb Natapov wrote: On Wed, Jul 24, 2013 at 06:26:41PM +0200, Alexander Graf wrote: 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 Can you disable emulate_invalid_state on 3.7? I could only find emulate_invalid_guest_state. I suppose you mean that one? :) $ rmmod kvm-intel $ modprobe kvm-intel emulate_invalid_guest_state=n $ ./x86_64-softmmu/qemu-system-x86_64 -nographic -kernel /boot/vmlinuz -append console=ttyS0 -bios pc-bios/bios.bin -enable-kvm QEMU 1.5.50 monitor - type 'help' for more information (qemu) KVM: entry failed, hardware error 0x8021 If you're running a guest on an Intel machine without unrestricted mode support, the failure can be most likely due to the guest entering an invalid state for Intel VT. For example, the guest maybe running in big real mode which is not supported on less recent Intel processors. EAX=0011 EBX=18ae1000 ECX=6a12 EDX=000fffa9 ESI=07feb50d EDI= EBP=69d2 ESP=69d2 EIP=c489 EFL=00010006 [-P-] CPL=0 II=0 A20=1 SMM=0 HLT=0 ES =fd39 000fd390 00809300 DPL=0 DS16 [-WA] CS =f000 000f 9b00 DPL=0 CS16 [-RA] SS = 9300 DPL=0 DS16 [-WA] DS =0030 00809300 DPL=0 DS16 [-WA] FS =0030 00809300 DPL=0 DS16 [-WA] GS =c900 000c9000 00809300 DPL=0 DS16 [-WA] LDT= 8200 DPL=0 LDT TR = 8b00 DPL=0 TSS32-busy GDT= 000fd3a8 0037 IDT= 000fd3e6 CR0=0011 CR2= CR3= CR4= DR0= DR1= DR2= DR3= DR6=0ff0 DR7=0400 EFER= Code=01 1e e0 d3 2e 0f 01 16 a0 d3 0f 20 c0 66 83 c8 01 0f 22 c0 66 ea 91 c4 0f 00 08 00 b8 10 00 00 00 8e d8 8e c0 8e d0 8e e0 8e e8 89 c8 ff e2 89 c1 b8 QEMU: Terminated What happens on upstream kernel (works for me obviously :)). kvm-kmod from 3.9 works. Alex
Re: [Qemu-devel] VM can not boot after commit 235e898
Am 24.07.2013 18:53, schrieb Gleb Natapov: What happens on upstream kernel (works for me obviously :)). 3.10.x has been working fine for me on openSUSE 12.3. Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
Re: [Qemu-devel] VM can not boot after commit 235e898
On Wed, Jun 5, 2013 at 10:44 AM, Dunrong Huang riegama...@gmail.com wrote: On Wed, Jun 5, 2013 at 1:03 AM, Jordan Justen jljus...@gmail.com wrote: On Tue, Jun 4, 2013 at 1:26 AM, Dunrong Huang riegama...@gmail.com wrote: On Tue, Jun 4, 2013 at 3:51 PM, Gleb Natapov g...@redhat.com wrote: On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? I am sure 651eb0f4 does not fix this problem. My test environment is below: * config.log: # head -n 2 config.log # QEMU configure log 2013年 06月 04日 星期二 16:12:59 CST # Configured with: './configure' '--prefix=/root/usr' '--enable-kvm' '--enable-werror' '--enable-debug' '--enable-debug-tcg' '--enable-debug-info' '--enable-sdl' '--enable-gtk' '--enable-virtfs' '--enable-vnc' '--enable-mixemu' '--enable-vnc-tls' '--enable-vnc-sasl' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-vnc-ws' '--enable-curses' '--enable-curl' '--enable-nptl' '--enable-system' '--enable-user' '--enable-linux-user' '--enable-guest-base' '--enable-uuid' '--enable-vde' '--enable-linux-aio' '--enable-cap-ng' '--enable-attr' '--enable-docs' '--enable-vhost-net' '--enable-spice' '--enable-usb-redir' '--enable-smartcard-nss' '--enable-tpm' '--enable-guest-agent' '--target-list=x86_64-softmmu' * kernel version: # uname -a Linux gentoo-company 3.8.2-gentoo #1 SMP Fri Mar 8 11:44:36 CST 2013 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux You were using a 3.8 kernel originally? (Someone mentioned trying a 3.8 kernel, and I think that is when you went to 3.8.) yes, I have been using kernel 3.8.2 lately, not because of Paolo's suggestion. * details of git tree: # git log HEAD --oneline 1713924 gtk: don't use g_object_unref on GdkCursor 41686a9 gtk: don't resize window when enabling scaling 651eb0f fix double free the memslot in kvm_set_phys_mem 25b4833 configure: Report unknown target names more helpfully 6e92f82 configure: Autogenerate default target list 0ded1fe Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging 95669e6 i.MX: Improve EPIT timer code. 6539ed2 exynos4210.c: register rom_mem for memory migration * QEMU command line: x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cdrom /mnt/nfs/Images/ISO/ubuntu-12.04-dvd-amd64.iso FWIW, I've been able to boot the 11.10 iso when booted to a 3.9 kernel. Does it only fail after you boot the OS? If you just run KVM without a disk, so only seabios runs, is it okay? It fails even runing without any parameters, like: x86_64-softmmu/qemu-system-x86_64 -enable-kvm No BIOS information printed, just a black screen is shown. After disable KVM_MEM_READONLY flag like below, VM can boot normally. diff --git a/kvm-all.c b/kvm-all.c index 405480e..c33ba6e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -774,7 +774,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add) mem-memory_size = size; mem-start_addr = start_addr; mem-ram = ram; -mem-flags = kvm_mem_flags(s, log_dirty, readonly_flag); +mem-flags = kvm_mem_flags(s, log_dirty, false); err = kvm_set_user_memory_region(s, mem); if (err) { I can provide more details if needed. I don't think you mentioned how it fails. Does KVM crash? Is an error message printed? Does the VM reset, or just hang? 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
Re: [Qemu-devel] VM can not boot after commit 235e898
Fixed in 651eb0f4? On Mon, Jun 3, 2013 at 8:47 PM, Dunrong Huang riegama...@gmail.com wrote: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. Any information I should provide? -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org
Re: [Qemu-devel] VM can not boot after commit 235e898
Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Paolo Any information I should provide? -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org
Re: [Qemu-devel] VM can not boot after commit 235e898
On Tue, Jun 4, 2013 at 2:41 PM, Jordan Justen jljus...@gmail.com wrote: Fixed in 651eb0f4? No, it still fails. On Mon, Jun 3, 2013 at 8:47 PM, Dunrong Huang riegama...@gmail.com wrote: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. Any information I should provide? -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org
Re: [Qemu-devel] VM can not boot after commit 235e898
On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. Paolo -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org
Re: [Qemu-devel] VM can not boot after commit 235e898
On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? -- Gleb.
Re: [Qemu-devel] VM can not boot after commit 235e898
On Tue, Jun 4, 2013 at 3:51 PM, Gleb Natapov g...@redhat.com wrote: On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? I am sure 651eb0f4 does not fix this problem. My test environment is below: * config.log: # head -n 2 config.log # QEMU configure log 2013年 06月 04日 星期二 16:12:59 CST # Configured with: './configure' '--prefix=/root/usr' '--enable-kvm' '--enable-werror' '--enable-debug' '--enable-debug-tcg' '--enable-debug-info' '--enable-sdl' '--enable-gtk' '--enable-virtfs' '--enable-vnc' '--enable-mixemu' '--enable-vnc-tls' '--enable-vnc-sasl' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-vnc-ws' '--enable-curses' '--enable-curl' '--enable-nptl' '--enable-system' '--enable-user' '--enable-linux-user' '--enable-guest-base' '--enable-uuid' '--enable-vde' '--enable-linux-aio' '--enable-cap-ng' '--enable-attr' '--enable-docs' '--enable-vhost-net' '--enable-spice' '--enable-usb-redir' '--enable-smartcard-nss' '--enable-tpm' '--enable-guest-agent' '--target-list=x86_64-softmmu' * kernel version: # uname -a Linux gentoo-company 3.8.2-gentoo #1 SMP Fri Mar 8 11:44:36 CST 2013 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux * details of git tree: # git log HEAD --oneline 1713924 gtk: don't use g_object_unref on GdkCursor 41686a9 gtk: don't resize window when enabling scaling 651eb0f fix double free the memslot in kvm_set_phys_mem 25b4833 configure: Report unknown target names more helpfully 6e92f82 configure: Autogenerate default target list 0ded1fe Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging 95669e6 i.MX: Improve EPIT timer code. 6539ed2 exynos4210.c: register rom_mem for memory migration * QEMU command line: x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cdrom /mnt/nfs/Images/ISO/ubuntu-12.04-dvd-amd64.iso After disable KVM_MEM_READONLY flag like below, VM can boot normally. diff --git a/kvm-all.c b/kvm-all.c index 405480e..c33ba6e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -774,7 +774,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add) mem-memory_size = size; mem-start_addr = start_addr; mem-ram = ram; -mem-flags = kvm_mem_flags(s, log_dirty, readonly_flag); +mem-flags = kvm_mem_flags(s, log_dirty, false); err = kvm_set_user_memory_region(s, mem); if (err) { I can provide more details if needed. -- Gleb. -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org
Re: [Qemu-devel] VM can not boot after commit 235e898
On Tue, Jun 4, 2013 at 1:26 AM, Dunrong Huang riegama...@gmail.com wrote: On Tue, Jun 4, 2013 at 3:51 PM, Gleb Natapov g...@redhat.com wrote: On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? I am sure 651eb0f4 does not fix this problem. My test environment is below: * config.log: # head -n 2 config.log # QEMU configure log 2013年 06月 04日 星期二 16:12:59 CST # Configured with: './configure' '--prefix=/root/usr' '--enable-kvm' '--enable-werror' '--enable-debug' '--enable-debug-tcg' '--enable-debug-info' '--enable-sdl' '--enable-gtk' '--enable-virtfs' '--enable-vnc' '--enable-mixemu' '--enable-vnc-tls' '--enable-vnc-sasl' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-vnc-ws' '--enable-curses' '--enable-curl' '--enable-nptl' '--enable-system' '--enable-user' '--enable-linux-user' '--enable-guest-base' '--enable-uuid' '--enable-vde' '--enable-linux-aio' '--enable-cap-ng' '--enable-attr' '--enable-docs' '--enable-vhost-net' '--enable-spice' '--enable-usb-redir' '--enable-smartcard-nss' '--enable-tpm' '--enable-guest-agent' '--target-list=x86_64-softmmu' * kernel version: # uname -a Linux gentoo-company 3.8.2-gentoo #1 SMP Fri Mar 8 11:44:36 CST 2013 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux You were using a 3.8 kernel originally? (Someone mentioned trying a 3.8 kernel, and I think that is when you went to 3.8.) * details of git tree: # git log HEAD --oneline 1713924 gtk: don't use g_object_unref on GdkCursor 41686a9 gtk: don't resize window when enabling scaling 651eb0f fix double free the memslot in kvm_set_phys_mem 25b4833 configure: Report unknown target names more helpfully 6e92f82 configure: Autogenerate default target list 0ded1fe Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging 95669e6 i.MX: Improve EPIT timer code. 6539ed2 exynos4210.c: register rom_mem for memory migration * QEMU command line: x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cdrom /mnt/nfs/Images/ISO/ubuntu-12.04-dvd-amd64.iso FWIW, I've been able to boot the 11.10 iso when booted to a 3.9 kernel. Does it only fail after you boot the OS? If you just run KVM without a disk, so only seabios runs, is it okay? After disable KVM_MEM_READONLY flag like below, VM can boot normally. diff --git a/kvm-all.c b/kvm-all.c index 405480e..c33ba6e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -774,7 +774,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add) mem-memory_size = size; mem-start_addr = start_addr; mem-ram = ram; -mem-flags = kvm_mem_flags(s, log_dirty, readonly_flag); +mem-flags = kvm_mem_flags(s, log_dirty, false); err = kvm_set_user_memory_region(s, mem); if (err) { I can provide more details if needed. I don't think you mentioned how it fails. Does KVM crash? Is an error message printed? Does the VM reset, or just hang? -Jordan
Re: [Qemu-devel] VM can not boot after commit 235e898
On Wed, Jun 5, 2013 at 1:03 AM, Jordan Justen jljus...@gmail.com wrote: On Tue, Jun 4, 2013 at 1:26 AM, Dunrong Huang riegama...@gmail.com wrote: On Tue, Jun 4, 2013 at 3:51 PM, Gleb Natapov g...@redhat.com wrote: On Tue, Jun 04, 2013 at 03:47:47PM +0800, Dunrong Huang wrote: On Tue, Jun 4, 2013 at 2:47 PM, Paolo Bonzini pbonz...@redhat.com wrote: Il 04/06/2013 05:47, Dunrong Huang ha scritto: QEMU command: ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 debian-append.img git bisect tells that the following commit causes this bug: commit 235e8982ad393e5611cb892df54881c872eea9e1 Author: Jordan Justen jordan.l.jus...@intel.com mailto:jordan.l.jus...@intel.com Date: Wed May 29 01:27:26 2013 -0700 kvm: support using KVM_MEM_READONLY flag for regions For readonly memory regions and rom devices in romd_mode, we make use of the KVM_MEM_READONLY. A slot that uses KVM_MEM_READONLY can be read from and code can execute from the region, but writes will exit to qemu. After reverting this commit, VM can boot normally. A patch is queued for that. Using kernel 3.8 or reverting the commit will both work. Ok, thanks for information, I will try it. The fix is 651eb0f4 and you claim it is still fails for you. This is strange because the commit fixed the problem for everyone else. Can you double check that you are testing the right commit and you recompiled and reinstalled? I am sure 651eb0f4 does not fix this problem. My test environment is below: * config.log: # head -n 2 config.log # QEMU configure log 2013年 06月 04日 星期二 16:12:59 CST # Configured with: './configure' '--prefix=/root/usr' '--enable-kvm' '--enable-werror' '--enable-debug' '--enable-debug-tcg' '--enable-debug-info' '--enable-sdl' '--enable-gtk' '--enable-virtfs' '--enable-vnc' '--enable-mixemu' '--enable-vnc-tls' '--enable-vnc-sasl' '--enable-vnc-jpeg' '--enable-vnc-png' '--enable-vnc-ws' '--enable-curses' '--enable-curl' '--enable-nptl' '--enable-system' '--enable-user' '--enable-linux-user' '--enable-guest-base' '--enable-uuid' '--enable-vde' '--enable-linux-aio' '--enable-cap-ng' '--enable-attr' '--enable-docs' '--enable-vhost-net' '--enable-spice' '--enable-usb-redir' '--enable-smartcard-nss' '--enable-tpm' '--enable-guest-agent' '--target-list=x86_64-softmmu' * kernel version: # uname -a Linux gentoo-company 3.8.2-gentoo #1 SMP Fri Mar 8 11:44:36 CST 2013 x86_64 Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz GenuineIntel GNU/Linux You were using a 3.8 kernel originally? (Someone mentioned trying a 3.8 kernel, and I think that is when you went to 3.8.) yes, I have been using kernel 3.8.2 lately, not because of Paolo's suggestion. * details of git tree: # git log HEAD --oneline 1713924 gtk: don't use g_object_unref on GdkCursor 41686a9 gtk: don't resize window when enabling scaling 651eb0f fix double free the memslot in kvm_set_phys_mem 25b4833 configure: Report unknown target names more helpfully 6e92f82 configure: Autogenerate default target list 0ded1fe Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging 95669e6 i.MX: Improve EPIT timer code. 6539ed2 exynos4210.c: register rom_mem for memory migration * QEMU command line: x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cdrom /mnt/nfs/Images/ISO/ubuntu-12.04-dvd-amd64.iso FWIW, I've been able to boot the 11.10 iso when booted to a 3.9 kernel. Does it only fail after you boot the OS? If you just run KVM without a disk, so only seabios runs, is it okay? It fails even runing without any parameters, like: x86_64-softmmu/qemu-system-x86_64 -enable-kvm No BIOS information printed, just a black screen is shown. After disable KVM_MEM_READONLY flag like below, VM can boot normally. diff --git a/kvm-all.c b/kvm-all.c index 405480e..c33ba6e 100644 --- a/kvm-all.c +++ b/kvm-all.c @@ -774,7 +774,7 @@ static void kvm_set_phys_mem(MemoryRegionSection *section, bool add) mem-memory_size = size; mem-start_addr = start_addr; mem-ram = ram; -mem-flags = kvm_mem_flags(s, log_dirty, readonly_flag); +mem-flags = kvm_mem_flags(s, log_dirty, false); err = kvm_set_user_memory_region(s, mem); if (err) { I can provide more details if needed. I don't think you mentioned how it fails. Does KVM crash? Is an error message printed? Does the VM reset, or just hang? 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