> Subject: Re: pci-stub error and MSI-X for KVM guest > > * Fischer, Anna (anna.fischer@xxxxxx) wrote: > > > Ouch. Can you do "debuginfo-install qemu-system-x86" to get the > debug > > > packages, then attach gdb to the QEMU process so that when you do > lspci > > > -v > > > in the guest (assuming this is QEMU segfaulting) you'll get a > backtrace? > > > > I don't know how I can tell virt-manager through the GUI to enable > debug mode, e.g. call virt-manager with '-s'. From the command line I > can attach gdb like this, but when running virt-manager from the GUI > then I cannot connect to localhost:1234. However, the issues only arise > when starting virt-manager from the GUI. I can't find the configuration > option to somehow tell that I want it to be launched with '-s'? > > Just looking for a backtrace of the qemu-kvm process itself. So after > you launch it via virt-manager, gdb /usr/bin/qemu-kvm $(pidof qemu-kvm) > should be sufficient. So, when setting a breakpoint for the exit() call I'm getting a bit closer to figuring where it kills my guest. Breakpoint 1, exit (status=1) at exit.c:99 99 { Current language: auto The current source language is "auto; currently c". (gdb) bt #0 exit (status=1) at exit.c:99 #1 0x0000000000470c6e in assigned_dev_pci_read_config (d=0x259c6f0, address=64, len=4) at /usr/src/debug/qemu-kvm-0.11.0/hw/device-assignment.c:349 #2 0x000000000042419d in handle_io (vcpu=<value optimized out>) at /usr/src/debug/qemu-kvm-0.11.0/qemu-kvm.c:784 #3 kvm_run (vcpu=<value optimized out>) at /usr/src/debug/qemu-kvm-0.11.0/qemu-kvm.c:1017 #4 0x0000000000424273 in kvm_cpu_exec (env=0x3f) at /usr/src/debug/qemu-kvm-0.11.0/qemu-kvm.c:1686 #5 0x0000000000425856 in kvm_main_loop_cpu (env=0x255a150) at /usr/src/debug/qemu-kvm-0.11.0/qemu-kvm.c:1868 #6 ap_main_loop (env=0x255a150) at /usr/src/debug/qemu-kvm-0.11.0/qemu-kvm.c:1905 #7 0x00000035aac06a3a in start_thread (arg=<value optimized out>) at pthread_create.c:297 #8 0x00000035aa0ddf3d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #9 0x0000000000000000 in ?? () (gdb) p assigned_dev_pci_read_config::address $1 = 64 (gdb) p assigned_dev_pci_read_config::val $2 = 0 (gdb) p assigned_dev_pci_read_config::len $3 = 4 (gdb) p assigned_dev_pci_read_config::ret $4 = <value optimized out> (gdb) p assigned_dev_pci_read_config::fd $5 = 13 (gdb) p assigned_dev_pci_read_config::pci_dev $6 = (AssignedDevice *) 0x259c6f0 (gdb) p assigned_dev_pci_read_config::pci_dev->real_device $7 = {bus = 0 '\000', dev = 0 '\000', func = 0 '\000', irq = 0, region_number = 7, regions = {{ type = 512, valid = 1, base_addr = 4077142016, size = 16384, resource_fd = 15}, {type = 0, valid = 0, base_addr = 0, size = 0, resource_fd = 0}, {type = 0, valid = 0, base_addr = 0, size = 0, resource_fd = 0}, {type = 512, valid = 1, base_addr = 4077273088, size = 16384, resource_fd = 16}, {type = 0, valid = 0, base_addr = 0, size = 0, resource_fd = 0}, { type = 0, valid = 0, base_addr = 0, size = 0, resource_fd = 0}, {type = 0, valid = 0, base_addr = 0, size = 0, resource_fd = 0}}, config_fd = 13} (gdb) p assigned_dev_pci_read_config::d $8 = (PCIDevice *) 0x259c6f0 So the function assigned_dev_pci_read_config fails to read the PCI configuration of the device and then the exit(1) call kills my guest. I don't know enough about the internals of KVM PCI device assignment and furthermore I don't quite know why this works when starting virt-manager from the command line and not when starting it from the GUI. >From the dmesg logs I would still guess that the problem is that pci-stub is not initialized properly, and perhaps this is also why the PCI read fails here? pci-stub tells me in the logs "enabling device" but I don't see any messages about enabling/assigning interrupts as I do when running from the command line. Let me know if you need any further information. Attached a list of virt packages I run under Fedora Core 12. Thanks, Anna
Attachment:
packages.log
Description: packages.log