[SeaBIOS] Qemu-kvm VM halt at allocate VGA stack when continuously reset VM
Xulei (Stone)
stone.xulei at huawei.com
Fri Dec 18 01:02:04 CET 2015
Thanks for Gamal's and Kevin's reply.
Here i'd like to provide more information:
- My VM is running under KVM (KMOD 3.6);
- qmp returns:
virsh # qemu-monitor-command hrg_sles11_sp3_64_2U_ide --pretty '{"execute":"query-kvm"}'
{
"return": {
"enabled": true,
"present": true
},
"id": "libvirt-18099"
}
- kmod ftrace returns:
<...>-113789 [014] 858323.684996: kvm_emulate_insn: f0000:9:ff ff (real)
<...>-113789 [014] 858323.684996: kvm_inj_exception: #UD (0x0)
<...>-113789 [014] 858323.684996: kvm_entry: vcpu 0
<...>-113789 [014] 858323.684997: kvm_exit: reason EXCEPTION_NMI rip 0x9 info 0 80000306
<...>-113789 [014] 858323.684997: kvm_emulate_insn: f0000:9:ff ff (real)
<...>-113789 [014] 858323.684997: kvm_inj_exception: #UD (0x0)
<...>-113789 [014] 858323.684998: kvm_entry: vcpu 0
<...>-113789 [014] 858323.684998: kvm_exit: reason EXCEPTION_NMI rip 0x9 info 0 80000306
So, it seems at some points, guest executes an invalid opcode triggering kmod injects exception UD
and seabios handle this exception through handle_hwpic1.
Any idea?
>Hi Xulei,
>
>i have a few questions about the problem you're experiencing, since I do see something similar:
>
>- Is your VM running under KVM?
>- If yes, does the KVM process show any register dumps or failure messages?
>- What's the output of:
>$ virsh qemu-monitor-command devstack --pretty '{"execute":"query-kvm"}'
>when seabios fails to load?
>
>Regards,
>Mohammed
>
>
>
>On Thu, Dec 17, 2015 at 6:28 AM, Xulei (Stone) <stone.xulei at huawei.com> wrote:
>
>
>
> >On Wed, Dec 02, 2015 at 07:09:36AM +0000, Xulei (Stone) wrote:
> >> I move HaveRunPost = 1 to handle_post() (after make_bios_writable()), and
> >> I have tested for 1 day with continuously resetting, it seems works well!
> >> Does following patch have some side effects?
> >
> >Thanks. I'll be traveling for the next two weeks. I'll take a look
> >when I return.
> >
>
> Hi, Kevin:
> Welcome journey back! I keep on this problem for about 1 month. Here,
> I provide some detail information and wish you could pay a little time
> thinking about this.
>
> My test script is very easy:
>
> #!/bin/bash
> vmname=$1
> while [ 1 ]
> do
> virsh reset $vmname &
> virsh reset $vmname &
> sleep 5
> done
>
>
> 1. This problem seems have relations with PIC irq0 and host CPU feature:
> On one of my host, this problem never happens while on another, it's
> very easy to happen (both of hosts have the same kmod,qemu,libvirt and
> SeaBIOS, SeaVGABIOS, except for the CPU feature).
>
> 2. SeaBIOS log tells me once VM halts at allocate VGA stack, it also has something
> wrong printing handle_smp log.
>
> 3. If i disconfig CONFIG_VGA_ALLOCATE_EXTRA_STACK, the VM will halt at Grub stage,
> and SeaVGABIOS log stop at printing "set VGA mode 114", then BIOS will loop handle_pwhic1.
>
> For now, i guess whether if SeaBIOS can not handle the hardware interrupt correctly
> when a host CPU has some advanced feature (x2apic? avx? xsave? tsc-deadline?).
>
> ==========bad SeaBIOS log=========
> [2015-12-17 12:37:30] In 32bit resume
> [2015-12-17 12:37:30] =====Attempting a hard reboot====
> [2015-12-17 12:37:30] SeaBIOS (version rel-1.8.1-0-g4adadbd-20151217_104405-linux-emBwNn)
> [2015-12-17 12:37:30] No Xen hypervisor found.
> [2015-12-17 12:37:30] Running on QEMU (i440fx)
> [2015-12-17 12:37:30] Running on KVM
> [2015-12-17 12:37:30] RamSize: 0x80000000 [cmos]
> [2015-12-17 12:37:30] Relocating init from 0x000db230 to 0x7ffad360 (size 76768)
> [2015-12-17 12:37:30] Found QEMU fw_cfg
> [2015-12-17 12:37:30] RamBlock: addr 0x0000000000000000 len 0x0000000080000000 [e820]
> [2015-12-17 12:37:30] Moving pm_base to 0x600
> [2015-12-17 12:37:30] boot order:
> [2015-12-17 12:37:30] 1: /pci at i0cf8/ide at 1,1/drive at 0/disk at 0
> [2015-12-17 12:37:30] 2: HALT
> [2015-12-17 12:37:30] maininit
> [2015-12-17 12:37:30] platform_hardware_setup
> [2015-12-17 12:37:30] init pic
> [2015-12-17 12:37:30] pic_setup
> [2015-12-17 12:37:30] pic_reset
> [2015-12-17 12:37:30] enable_hwirq
> [2015-12-17 12:37:30] CPU Mhz=3304
> [2015-12-17 12:37:30] enable_hwirq
> [2015-12-17 12:37:30] enable_hwirq
> [2015-12-17 12:37:30] === PCI bus & bridge init ===
> [2015-12-17 12:37:30] PCI: pci_bios_init_bus_rec bus = 0x0
> [2015-12-17 12:37:30] === PCI device probing ===
> [2015-12-17 12:37:30] Found 6 PCI devices (max PCI bus is 00)
> [2015-12-17 12:37:30] === PCI new allocation pass #1 ===
> [2015-12-17 12:37:30] PCI: check devices
> [2015-12-17 12:37:30] === PCI new allocation pass #2 ===
> [2015-12-17 12:37:30] PCI: IO: c000 - c02f
> [2015-12-17 12:37:30] PCI: 32: 0000000080000000 - 00000000fec00000
> [2015-12-17 12:37:30] PCI: map device bdf=00:01.2 bar 4, addr 0000c000, size 00000020 [io]
> [2015-12-17 12:37:30] PCI: map device bdf=00:01.1 bar 4, addr 0000c020, size 00000010 [io]
> [2015-12-17 12:37:30] PCI: map device bdf=00:02.0 bar 6, addr febe0000, size 00010000 [mem]
> [2015-12-17 12:37:30] PCI: map device bdf=00:02.0 bar 1, addr febf0000, size 00001000 [mem]
> [2015-12-17 12:37:30] PCI: map device bdf=00:02.0 bar 0, addr fc000000, size 02000000 [prefmem]
> [2015-12-17 12:37:30] PCI: init bdf=00:00.0 id=8086:1237
> [2015-12-17 12:37:30] PCI: init bdf=00:01.0 id=8086:7000
> [2015-12-17 12:37:30] PIIX3/PIIX4 init: elcr=00 0c
> [2015-12-17 12:37:30] PCI: init bdf=00:01.1 id=8086:7010
> [2015-12-17 12:37:30] PCI: init bdf=00:01.2 id=8086:7020
> [2015-12-17 12:37:30] PCI: init bdf=00:01.3 id=8086:7113
> [2015-12-17 12:37:30] Using pmtimer, ioport 0x608
> [2015-12-17 12:37:30] PCI: init bdf=00:02.0 id=1013:00b8
> [2015-12-17 12:37:30] PCI: Using 00:02.0 for primary VGA
> [2015-12-17 12:37:30] handle_hshamanpnd:dl leae_p_sismcmp_p:i: d a=ap3 <<======= here, seems abnormal!
> [2015-12-17 12:37:30] ièf[cf_^ifd_=f3
> [2015-12-17 12:37:30] èf[f^f_f]fÃÍ^XË<90>Found 4 cpu(s) max supported 4 cpu(s)
> [2015-12-17 12:37:30] Copying PIR from 0x7ffbea18 to 0x000f5700
> [2015-12-17 12:37:30] Copying MPTABLE from 0x00006e30/7ffa42c0 to 0x000f55e0
> [2015-12-17 12:37:30] Copying SMBIOS entry point from 0x00006e11 to 0x000f55c0
> [2015-12-17 12:37:31] Scan for VGA option rom
> [2015-12-17 12:37:31] Running option rom at c000:0003
> [2015-12-17 12:37:31] Start SeaVGABIOS (version rel-1.8.1-0-g4adadbd-20150316_085902-nilsson.home.kraxel.org)
> [2015-12-17 12:37:31] enter vga_post:
> [2015-12-17 12:37:31] a=00000010 b=0000ffff c=00000000 d=0000ffff ds=0000 es=f000 ss=0000
> [2015-12-17 12:37:31] si=00000000 di=000057e0 bp=00000000 sp=00006dbe cs=f000 ip=d1fb f=0000
> [2015-12-17 12:37:31] cirrus init
> [2015-12-17 12:37:31] cirrus init 2
> [2015-12-17 12:37:31] Attempting to allocate VGA stack via pmm call to f000:d2a0 <<====== here stuck, loop handle PIC irq0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> [2015-12-17 12:37:35] handle_hwpic1 irq=0
> ... always hanle_hwpic1 irq=0, never ends anymore...
>
> >-Kevin
> _______________________________________________
> SeaBIOS mailing list
> SeaBIOS at seabios.org
> http://www.seabios.org/mailman/listinfo/seabios
>
>
>
>
>--
>
>Mohammed Gamal
>Software Engineer
>
>ProfitBricks GmbH
>Greifswalder Straße 207
>D - 10405 Berlin
>
>Tel: +49 30 577 008 20
>Email: mohammed.gamal at profitbricks.com <mailto:axel.herr at profitbricks.com>
>
>Web: http://www.profitbricks.de
>
>Sitz der Gesellschaft: Berlin.
>Registergericht: Amtsgericht Charlottenburg, HRB 125506B.
>Geschäftsführer: Andreas Gauger, Achim Weiss.
More information about the SeaBIOS
mailing list