Bug 771616
Summary: | Too big value of QXL-VGA ram_size and vram_size cause VM paused (internal-error) | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise Linux 6 | Reporter: | Sibiao Luo <sluo> | ||||
Component: | seabios | Assignee: | Gerd Hoffmann <kraxel> | ||||
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | ||||
Severity: | high | Docs Contact: | |||||
Priority: | medium | ||||||
Version: | 6.4 | CC: | acathrow, alevy, bcao, bsarathy, chayang, ddumas, flang, gleb, juli, juzhang, knoel, kraxel, michen, minovotn, mkenneth, mkrcmari, qzhang, rhod, shu, skrishna, vbenes, virt-maint, wdai, xfu | ||||
Target Milestone: | rc | ||||||
Target Release: | 6.4 | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | seabios-0.6.1.2-26.el6 | Doc Type: | Bug Fix | ||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2013-02-21 08:15:52 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | |||||||
Bug Blocks: | 886216 | ||||||
Attachments: |
|
Description
Sibiao Luo
2012-01-04 10:50:58 UTC
Hmm, tougth one. seabios seems to be confused due to running out of address space. 68555555 is rounded to the next power of two (134217738 aka 128M), which doesn't fit into the pci i/o window @ 0xf0000000 seabios log: Start bios (version 0.6.1.2-20120217_061056-x86-004.build.bos.redhat.com) Ram Size=0x08000000 (0x0000000000000000 high) CPU Mhz=2795 PCI: pci_bios_init_bus_rec bus = 0x0 PIIX3/PIIX4 init: elcr=00 0c PCI: bus=0 devfn=0x00: vendor_id=0x8086 device_id=0x1237 PCI: bus=0 devfn=0x08: vendor_id=0x8086 device_id=0x7000 PCI: bus=0 devfn=0x09: vendor_id=0x8086 device_id=0x7010 region 4: 0x0000c000 PCI: bus=0 devfn=0x0b: vendor_id=0x8086 device_id=0x7113 PCI: bus=0 devfn=0x10: vendor_id=0x1b36 device_id=0x0100 region 0: 0xf0000000 region 1: 0xf8000000 region 2: 0x00000000 region 3: 0x0000c020 region 6: 0x00010000 PCI: bus=0 devfn=0x18: vendor_id=0x10ec device_id=0x8139 region 0: 0x0000c100 region 1: 0x00020000 region 6: 0x00030000 [ hangs here ] But is there any way that seabios can notify qemu and quit with error? do we even want it to, maybe the bar allocation logic should be duplicated in qemu just for sanity check? if you only fix seabios, then launch with qxl using 256 MB ram (whatever for vram) and seabios correctly doesn't allocate it you get a machine with non working vga, but without any complaints - user will see that as a failure. Patch posted. Created attachment 652926 [details]
Fix
Fixed in version seabios-0.6.1.2-26.el6 Reproduce this bug as follow version: Host: # uname -r 2.6.32-348.el6.x86_64 # rpm -q qemu-kvm-rhev qemu-kvm-rhev-0.12.1.2-2.346.el6.x86_64 # rpm -q seabios seabios-0.6.1.2-25.el6.x86_64 Steps: 1.Boot a guest with a value(68555555bit) of command line parameter vram_size/ram_size. eg: ...-spice disable-ticketing,port=5912 -vga qxl -global qxl-vga.vram_size=68555555 2. take "info qtree" in the QEMU-monitor. (qemu) info qtree ... dev: qxl-vga, id "" dev-prop: ram_size = 67108864 dev-prop: vram_size = 134217728 ... 3.Boot guest with -spice disable-ticketing,port=5912 -vga qxl -global qxl-vga.vram_size=134217738/qxl-vga.ram_size=134217738 Results: QEMU 0.12.1 monitor - type 'help' for more information (qemu) KVM internal error. Suberror: 1 rax 000000007fffd86d rbx 0000000000000000 rcx 0000000000000000 rdx 0000000000000000 rsi 0000000000000001 rdi 0000000000000001 rsp 0000000000006ea4 rbp 0000000000000004 r8 0000000000000000 r9 0000000000000000 r10 0000000000000000 r11 0000000000000000 r12 0000000000000000 r13 0000000000000000 r14 0000000000000000 r15 0000000000000000 rip 00000000000ef323 rflags 00000002 cs 0008 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type b l 0 g 1 avl 0) ds 0010 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0) es 0010 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0) ss 0010 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0) fs 0010 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0) gs 0010 (00000000/ffffffff p 1 dpl 0 db 1 s 1 type 3 l 0 g 1 avl 0) tr 0000 (00000000/0000ffff p 1 dpl 0 db 0 s 0 type b l 0 g 0 avl 0) ldt 0000 (00000000/0000ffff p 1 dpl 0 db 0 s 0 type 2 l 0 g 0 avl 0) gdt fc558/37 idt fdb50/0 cr0 11 cr2 0 cr3 0 cr4 0 cr8 0 efer 0 emulation failure, check dmesg for details (qemu) (qemu) info status VM status: paused (internal-error) (qemu) Verify this bug as follow version: Host: # uname -r 2.6.32-348.el6.x86_64 # rpm -q qemu-kvm-rhev qemu-kvm-rhev-0.12.1.2-2.346.el6.x86_64 # rpm -q seabios seabios-0.6.1.2-26.el6.x86_64 Steps: 1.Boot guest with -spice disable-ticketing,port=5912 -vga qxl -global qxl-vga.vram_size=134217738/qxl-vga.ram_size=134217738 Results: (qemu) info status VM status: running Addinfo: 1)Tried more than 15 times.Guest boot successfully. 2)Tried other value(536870922/2343321122),guest boot successfully and work well. 3)Tests include "qxl-vga.ram_size/qxl-vga.vram_size" According to above test ,this bug fixed. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2013-0307.html |