qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] E5-2620v2 - emulation stop error


From: Dr. David Alan Gilbert
Subject: Re: [Qemu-devel] E5-2620v2 - emulation stop error
Date: Wed, 11 Mar 2015 13:45:57 +0000
User-agent: Mutt/1.5.23 (2014-03-12)

* Bandan Das (address@hidden) wrote:
> "Dr. David Alan Gilbert" <address@hidden> writes:
> 
> > * Paolo Bonzini (address@hidden) wrote:
> >> 
> >> 
> >> On 10/03/2015 19:21, Bandan Das wrote:
> >> > Paolo Bonzini <address@hidden> writes:
> >> > 
> >> >> On 10/03/2015 17:57, Dr. David Alan Gilbert wrote:
> >> >>> I'm seeing something similar; it's very intermittent and generally
> >> >>> happening right at boot of the guest;   I'm running this on qemu
> >> >>> head+my postcopy world (but it's happening right at boot before 
> >> >>> postcopy
> >> >>> gets a chance), and I'm using a 3.19ish kernel. Xeon E5-2407 in my case
> >> >>> but hey maybe I'm seeing a different bug.
> >> > 
> >> > Probably a tangent but is the qemu trace identical to what Andrey is 
> >> > seeing ?
> >> > From a cursory look and my limited understanding, it seems his failure 
> >> > is #GP
> >> > when executing video bios.
> >> > 
> >> >> Same here on 3.16 + Xeon E5 v3 kernel.
> >> > 
> >> > I will try to reproduce this on a v2.
> >> 
> >> I see several failures, usually mine have suberror 1.  With a 32-VCPU
> >> guest I can reproduce it roughly half of the time.
> >> 
> >> Paolo
> >
> > while true; do (sleep 5; echo -e 
> > '\001cq\n')|/opt/qemu-try-world3/bin/qemu-system-x86_64 -machine 
> > pc-i440fx-2.0,accel=kvm -m 1024 -smp 128 -nographic -device sga 2>&1 | tee 
> > /tmp/qemu.op; grep "internal error" /tmp/qemu.op -q && break; done
> >
> > (and leave about 2mins of runs before declaring good)
> >
> > bad: cd2946607b42636d6c8cf6dbf94bce0273507b17
> > bad: 041ccc922ee474693a2869d4e3b59e920c739bc0
> > bad: 2559db069628981bfdc90637fac5bf1b4f4e8ef5
> > bad: 21f5826a04d38e19488f917e1eef22751490c769
> > good:e95d24ff40c77fbfd71396834a2eb99375f8bcc4
> > good: 7781a492fa5a2eff53d06b25b93f0186ad3226c9
> > good: c3edd62851098e6417786193ed9e9341781fcf57
> > good: c5c6d7f81a6950d8e32a3b5a0bafd37bfa5a8e88
> > good: 73104fd399c6778112f64fe0d439319f24508d9a
> > good: 92013cf8ca10adafec9a92deb5df993e7df22cb9
> > good: 4478aa768ccefcc5b234c23d035435fd71b932f6
> > good: 2.2.0
> >
> > address@hidden qemu-world3]# git bisect bad
> > 21f5826a04d38e19488f917e1eef22751490c769 is the first bad commit
> 
> I can reproduce this on E5-2620 v2 with  David's "while true" test.
> (The emulation failure I mean, not the suberror 2 that Andrey is seeing)
> The commit that seems to have introduced this is -
> 
> commit 0673b7870063a3affbad9046fb6d385a4e734c19
> Author: Kevin O'Connor <address@hidden>
> Date:   Sat May 24 10:49:50 2014 -0400
> 
>     smp: Replace QEMU SMP init assembler code with C; run only in 32bit mode.
>     
>     Change the multi-processor init code to trampoline into 32bit mode on
>     each of the additional processors.  Implement an atomic lock so that
>     each processor performs its initialization serially.
> 
> I am not sure what in that change could cause this though..
> Also, in my testing, "unrestricted_guest=0" avoids the failure.

Turning on debug logging
( -chardev file,id=log,path=/tmp/debugcon.$$ -device 
isa-debugcon,chardev=log,iobase=0x402 )


SeaBIOS (version rel-1.8.0-0-g4c59f5d-20150219_092859-nilsson.home.kraxel.org)
No Xen hypervisor found.
Running on QEMU (i440fx)
Running on KVM
RamSize: 0x40000000 [cmos]
Relocating init from 0x000dea20 to 0x3ffaed30 (size 70160)
Found QEMU fw_cfg
RamBlock: addr 0x0000000000000000 len 0x0000000040000000 [e820]
Moving pm_base to 0x600
CPU Mhz=2112
=== PCI bus & bridge init ===
PCI: pci_bios_init_bus_rec bus = 0x0
=== PCI device probing ===
Found 6 PCI devices (max PCI bus is 00)
=== PCI new allocation pass #1 ===
PCI: check devices
=== PCI new allocation pass #2 ===
PCI: IO: c000 - c04f
PCI: 32: 0000000080000000 - 00000000fec00000
PCI: map device bdf=00:03.0  bar 1, addr 0000c000, size 00000040 [io]
PCI: map device bdf=00:01.1  bar 4, addr 0000c040, size 00000010 [io]
PCI: map device bdf=00:03.0  bar 6, addr feb80000, size 00040000 [mem]
PCI: map device bdf=00:03.0  bar 0, addr febc0000, size 00020000 [mem]
PCI: map device bdf=00:02.0  bar 6, addr febe0000, size 00010000 [mem]
PCI: map device bdf=00:02.0  bar 2, addr febf0000, size 00001000 [mem]
PCI: map device bdf=00:02.0  bar 0, addr fd000000, size 01000000 [prefmem]
PCI: init bdf=00:00.0 id=8086:1237
PCI: init bdf=00:01.0 id=8086:7000
PIIX3/PIIX4 init: elcr=00 0c
PCI: init bdf=00:01.1 id=8086:7010
PCI: init bdf=00:01.3 id=8086:7113
Using pmtimer, ioport 0x608
PCI: init bdf=00:02.0 id=1234:1111
PCI: init bdf=00:03.0 id=8086:100e
PCI: Using 00:02.0 for primary VGA
Found 1 cpu(s) max supported 128 cpu(s)
Copying PIR from 0x3ffbfc98 to 0x000f65a0
WARNING - Unable to allocate resource at copy_mptable:62!
Copying SMBIOS entry point from 0x00006db0 to 0x000f6580
Scan for VGA option rom
Running option rom at c000:0003
Start SeaVGABIOS (version 
rel-1.8.0-0-g4c59f5d-20150219_092912-nilsson.home.kraxel.org)
enter vga_post:
   a=00000010  b=0000ffff  c=00000000  d=0000ffff ds=0000 es=f000 ss=0000
  si=00000000 di=00006970 bp=00000000 sp=00006d0a cs=f000 ip=d239  f=0000
VBE DISPI: bdf 00:02.0, bar 0
VBE DISPI: lfb_addr=fd000000, size 16 MB
Attempting to allocate VGA stack via pmm call to f000:d2f4
pmm call arg1=0
VGA stack allocated at ef1b0
Running option rom at c980:0003

is where it dies for me; actually with debug console on it's
pretty rare for it to boot.  Is that:
'WARNING - Unable to allocate resource at copy_mptable:62!' the
canary ?

Dave

> > commit 21f5826a04d38e19488f917e1eef22751490c769
> > Author: Gerd Hoffmann <address@hidden>
> > Date:   Thu Feb 19 09:33:03 2015 +0100
> >
> >     seabios: update to 1.8.0 release
> >     
> >     'git shortlog 8936dbb2..4c59f5d8' for seabios repo:
> >     
> >     David Woodhouse (4):
> >           Update EFI_COMPATIBILITY16_TABLE to match 0.98 spec update
> >           build: use -m16 where available instead of asm(".code16gcc")
> >           romlayout: Use .code16 not .code16gcc
> >           vgabios: Use .code16 not .code16gcc
> >     
> >     Gerd Hoffmann (2):
> >           add scripts/tarball.sh
> >           build: set LC_ALL=C
> >     
> >     Hannes Reinecke (1):
> >           megasas: read addional PCI I/O bar
> >     
> >     Ian Campbell (1):
> >           romlayout: Use "rep ; nop" not "rep nop".
> >     
> >     Kevin O'Connor (139):
> >           vgabios: Return from handle_1011() if handler found.
> >           edd: Move EDD get drive parameters (int 1348) logic from disk.c 
> > to block.c.
> >           edd: Use sectors==-1 to detect removable media.
> >           edd: Separate out ATA and virtio specific parts of fill_edd().
> >           cdemu: store internal cdemu fields in standard "el-torito" spec 
> > format.
> >           Move cdemu call interface and disk_ret helper code to disk.c.
> >           smm: Replace SMI assembler code with C code.
> >           smm: Use a C struct to define the layout of the SMM area.
> >           smp: Replace QEMU SMP init assembler code with C; run only in 
> > 32bit mode.
> >           Don't enable thread preemption during S3 resume vga option rom 
> > execution.
> >           Remove old Bochs bios fixed address string at 0xfff00.
> >           Move most of the VAR16FIXED() defs to misc.c.
> >           build: Avoid absolute paths during "whole-program" compiling.
> >           Make sure handle_smi() and handle_smp() are compiled out if not 
> > enabled.
> >           Remove the TODO file.
> >           Abstract reset call (and possible 16bit mode switch) into reset() 
> > function.
> >           build: Remove unused function getSectionsStart() from 
> > layoutrom.py.
> >           build: Extract section visiting logic in layoutrom.py.
> >           build: Refactor layoutrom.py gc() function.
> >           build: Use customized entry point for each type of build.
> >           build: Refactor findInit() function.
> >           build: Rework getRelocs() to use a hash instead of categories in 
> > layoutrom.py
> >           build: Keep segmented sections separate until final link step.
> >           build: Use fileid instead of category to write sections in 
> > layoutrom.py.
> >           build: Only export needed fields in LayoutInfo in layoutrom.py.
> >           build: Get fixed address variables from 32bit compile pass (not 
> > 16bit)
> >           build: Minor - fix comments referring to old tools/ directory.
> >           xhci: Update the times for usb command timeouts.
> >           ehci: Update usb command timeouts to use usb_xfer_time()
> >           uhci: Update usb command timeouts to use usb_xfer_time()
> >           ohci: Update usb command timeouts to use usb_xfer_time()
> >           vgabios: Fix broken build resulting from e5749978.
> >           boot: Change ":rom%d" boot order rom instance to ":rom%x"
> >           Minor - remove stray tab from src/fw/smm.c.
> >           build: Update kconfig to version in Linux 3.16.
> >           usb: Fix usb_xfer_time() to work when called in 16bit mode.
> >           xhci: Call usb_desc2pipe() on xhci_update_pipe().
> >           xhci: Remove 16bit code wrappers.
> >           xhci: Use high memory instead of low memory for internal storage.
> >           xhci: Move root hub and setup code to top of file.
> >           xhci: Add xhci_check_ports() and xhci_free_pipes() functions.
> >           ehci: Move port power up from ehci_hub_detect() to 
> > check_ehci_ports().
> >           usb-hub: Enable power to all ports prior to calling 
> > usb_enumerate().
> >           xhci: Change xhci_hub_detect() to use connect status instead of 
> > link state.
> >           uhci: Repeatedly poll for device detect for 100ms.
> >           ohci: Repeatedly poll for device detect for 100ms.
> >           ehci: Stall uhci/ohci init only until default port routing is 
> > done.
> >           usb: Perform device detect polling on all usb controllers.
> >           ehci: Fix bug in hub port assignment
> >           Revert "Use the extra stack for 16bit USB and PS2 keyboard/mouse 
> > commands."
> >           pmm: Fix entry point to support non-zero %ss
> >           Move stack hop code below call32/call16 code in stacks.c
> >           Add need_hop_back() call that determines if stack_hop_back is 
> > needed
> >           Update invoke_mouse_handler() to use need_hop_back()
> >           Update stack_hop_back() to jump to 16bit mode if called in 32bit 
> > mode.
> >           Track when entering via call32() and use the same mode for 
> > stack_hop_back()
> >           Simplify farcall16 code
> >           Update reset() to use call16_back()
> >           build: Support declaring 32bit C functions that must reside in 
> > the f-segment
> >           Move call16() functions from romlayout.S to inline assembler in 
> > stacks.c
> >           Break up call32() into call32() and call32_sloppy()
> >           Fully restore 16bit state during call16_sloppy()
> >           Implement call32 mechanism using SMIs.
> >           Move a20 code from system.c and ps2port.h to x86.h
> >           Backup and restore a20 on call32_sloppy()
> >           usb: Rename ?hci_control() to ?hci_send_control()
> >           usb: Rename usb_getFrameExp() to usb_get_period()
> >           usb: Rename findEndPointDesc() to usb_find_desc()
> >           usb: Rename send_default_control() to usb_send_default_control()
> >           usb: Rename free_pipe() to usb_free_pipe()
> >           usb: Clarify usb freelist manipulations
> >           xhci: Change xhci_update_pipe() to xhci_realloc_pipe() and use 
> > for alloc too
> >           uhci: Export uhci_realloc_pipe() instead of uhci_alloc_pipe()
> >           ohci: Export ohci_realloc_pipe() instead of ohci_alloc_pipe()
> >           ehci: Export ehci_realloc_pipe() instead of ehci_alloc_pipe()
> >           usb: Use usb_realloc_pipe for pipe alloc, update, and free.
> >           Use 32bit memcpy in int1587 when applicable
> >           Don't clobber %ax on ENTRY_INTO32 macro
> >           Create assembler macros for saving and restoring 'struct bregs'
> >           Do full BREGS backup/restore for pmm, pnp, and irqentry_extrastack
> >           Remove unused macro ENTRY_ST
> >           vgabios: Don't declare custom internal BDA storage in std/bda.h
> >           vgabios: Cache a pointer to the current mode struct in the BDA
> >           vgabios: Don't pass vmode_g to vgafb_move_chars() / 
> > vgafb_clear_chars()
> >           vgabios: Rename vbe_flags to flags
> >           vgabios: Set cursor shape fixes
> >           vgabios: Refactor get/set_cursor_shape() code
> >           vgabios: Only init BDA device details in init_bios_area()
> >           vgabios: Only set the dcc_index=8 if stdvga ports are available
> >           vgabios: Move standard table definitions to std/vga.h
> >           vgabios: Fill in available legacy modes in video_func_static at 
> > runtime
> >           vgabios: Add support for reading framebuffer in "direct" mode
> >           Fix PNP regression introduced in 99cb8f3e due to missed conversion
> >           Minor - move PORT_PS2_CTRLB from hw/ps2port.h to hw/timer.c
> >           vgabios: Support emulating text mode attributes while in graphics 
> > mode
> >           vgabios: Add software cursor capability
> >           Use an aligned stack offset when entering on the extra stack
> >           Minor - comment updates in romlayout.S
> >           Fix build issue on gcc34
> >           pciinit: Fix build warning in mch_pci_slot_get_irq()
> >           floppy: Make sure to yield() during floppy PIO
> >           Minor - be consistent in placement of .code16/32 in romlayout.S
> >           Use macros for .code16/32 mode switches in inline asm in stacks.c
> >           Eliminate FUNCFSEG - only force portions of inline asm to 
> > f-segment
> >           usb: Update USB hub code to support super speed hubs
> >           Simplify README files - point to online documentation instead
> >           sdcard: Initial support for SD cards on PCI SDHCI controllers on 
> > QEMU
> >           Add wiki documentation to repository
> >           docs: Don't point to repo README files
> >           docs: Add info on MODE16/MODESEGMENT compile time flags
> >           docs: Add page describing SeaBIOS final object linking
> >           scsi: Move cdb_* functions above scsi_* functions
> >           scsi: Move process_scsi_op() to hw/blockcmd.c and rename
> >           cdrom: call scsi_process_op() instead of cdb_read()
> >           scsi: Don't export cdb_* functions
> >           cdrom: Break up very large read requests into smaller requests
> >           block: Check for read/write requests over 64K
> >           usb: Add support for OHCI bulk transfers
> >           readserial: Enhance pipe support
> >           docs: Add documentation on using readserial.py script
> >           uhci: Enable "depth" tree traversal for bulk transfers
> >           uhci: Increase bulk transfer STACKTDS to 16
> >           vgabios: Support emulated text in gfx_read_char()
> >           ehci: No need to support td array wrapping
> >           ehci: Simplify fillTDbuffer() and rename
> >           ehci: Merge ehci_send_control with ehci_send_bulk
> >           ohci: Merge ohci_send_control with ohci_send_bulk
> >           uhci: Merge uhci_send_control with uhci_send_bulk
> >           xhci: Merge xhci_send_control with xhci_send_bulk
> >           usb: Use usb_send_pipe() now that all drivers have x_send_pipe()
> >           xhci: Move xhci_xfer_x() functions together
> >           xhci: Merge some xhci_xfer_x() functions into xhci_send_pipe()
> >           usb: Control transfers always have an 8 byte command size
> >           usb: Minor - properly free memory on get_device_config() error 
> > path
> >           checkstack: Handle callw instruction
> >           docs: Document why v1.6.3 release came after v0.6.2
> >           docs: Update release history with dates of stable releases
> >           docs: There is only one VAR16 flag now
> >           docs: Note v1.8.0 release
> >     
> >     Marcel Apfelbaum (1):
> >           hw/pci: reserve IO and mem for pci express downstream ports with 
> > no devices attached
> >     
> >     Markus Armbruster (1):
> >           boot: Fix boot order for SCSI target, lun > 9
> >     
> >     Paolo Bonzini (5):
> >           piix: add and use dev-piix.h
> >           smm: complete SMM setup
> >           smm: unify SMM handlers
> >           vgabios: fix graphics operation with Bochs VGA in non-DISPI modes
> >           vgabios: implement read char in graphics mode
> >     
> >     zhanghailiang (1):
> >           acpi: use specified macro instead of magic-number
> >     
> >     Signed-off-by: Gerd Hoffmann <address@hidden>
> >
> >
> >
> > --
> > Dr. David Alan Gilbert / address@hidden / Manchester, UK
--
Dr. David Alan Gilbert / address@hidden / Manchester, UK



reply via email to

[Prev in Thread] Current Thread [Next in Thread]