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 > 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. > > > Another strange thing is that VM can boot normally on my laptop(with a > gentoo kernel 3.8.1 installed and same QEMU binary). > So I suspect the kernel is the root cause of this problem. I will try > again after upgrading kernel to 3.9. > After upgrading kernel from 3.8.2 to 3.9.4, this problem goes way. So this bug must have been fixed in kernel 3.9. Thank you all for replies! > > >> -Jordan >> > > > > -- Best Regards, Dunrong Huang Homepage: http://mathslinux.org