qemu-stable
[Top][All Lists]
Advanced

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

Re: [Qemu-stable] [Qemu-devel] [PATCH] vl: Delay initialization of memor


From: Eduardo Habkost
Subject: Re: [Qemu-stable] [Qemu-devel] [PATCH] vl: Delay initialization of memory backends
Date: Thu, 1 Sep 2016 14:39:37 -0300
User-agent: Mutt/1.6.2 (2016-07-01)

On Thu, Sep 01, 2016 at 05:41:52PM +0200, Paolo Bonzini wrote:
> On 01/09/2016 17:10, Eduardo Habkost wrote:
> > Ouch. It looks like the ordering requirements are messier than I
> > thought. vhost-user depends on the memory backends to be already
> > initialized.
> 
> You could also look at delaying initialization of vhost-user, not
> sending anything on the wire until after machine creation.

I was wishing the bug could be fixed without the need to touch
vhost, but I will take a look.

BTW, the vhost error is actually happening inside a VCPU thread,
after everything was supposed to be fully initialized.  Maybe the
memory listener logic in vhost.c is broken somehow?


Backtrace (after manually adding an abort() to help debugging):

#2  0x0000562ebf27feb5 in vhost_user_set_mem_table (dev=0x562ec0189630, 
mem=<optimized out>) at 
/home/ehabkost/rh/proj/virt/qemu/hw/virtio/vhost-user.c:308
#3  0x0000562ebf27e524 in vhost_dev_start (address@hidden, address@hidden) at 
/home/ehabkost/rh/proj/virt/qemu/hw/virtio/vhost.c:1304
#4  0x0000562ebf264a6b in vhost_net_start (dev=0x562ec19aa4c0, 
net=0x562ec0189630) at /home/ehabkost/rh/proj/virt/qemu/hw/net/vhost_net.c:232
#5  0x0000562ebf264a6b in vhost_net_start (address@hidden, ncs=0x562ec19f3750, 
address@hidden)
    at /home/ehabkost/rh/proj/virt/qemu/hw/net/vhost_net.c:324
#6  0x0000562ebf261543 in virtio_net_set_status (status=6 '\006', 
n=0x562ec19aa4c0) at /home/ehabkost/rh/proj/virt/qemu/hw/net/virtio-net.c:151
#7  0x0000562ebf261543 in virtio_net_set_status (vdev=<optimized out>, 
status=<optimized out>) at 
/home/ehabkost/rh/proj/virt/qemu/hw/net/virtio-net.c:224
#8  0x0000562ebf278fc3 in virtio_set_status (address@hidden, address@hidden 
'\006') at /home/ehabkost/rh/proj/virt/qemu/hw/virtio/virtio.c:760
#9  0x0000562ebf450cbe in virtio_pci_config_write (val=6, addr=18, 
opaque=0x562ec19a2180) at hw/virtio/virtio-pci.c:400
#10 0x0000562ebf450cbe in virtio_pci_config_write (opaque=0x562ec19a2180, 
addr=18, val=6, size=<optimized out>) at hw/virtio/virtio-pci.c:525
#11 0x0000562ebf234b98 in memory_region_write_accessor (mr=0x562ec19a2a10, 
addr=18, value=<optimized out>, size=1, shift=<optimized out>, mask=<optimized 
out>, attrs=...) at /home/ehabkost/rh/proj/virt/qemu/memory.c:525
#12 0x0000562ebf23309d in access_with_adjusted_size (address@hidden, 
address@hidden, address@hidden, access_size_min=<optimized out>, 
access_size_max=<optimized out>, access=0x562ebf234b20 
<memory_region_write_accessor>, mr=0x562ec19a2a10, attrs=...) at 
/home/ehabkost/rh/proj/virt/qemu/memory.c:591
#13 0x0000562ebf236f4c in memory_region_dispatch_write (address@hidden, 
addr=18, data=<optimized out>, address@hidden, address@hidden)
    at /home/ehabkost/rh/proj/virt/qemu/memory.c:1275
#14 0x0000562ebf1f23b7 in address_space_write (mr=0x562ec19a2a10, l=<optimized 
out>, addr1=<optimized out>, len=1, buf=0x7f1917a1c3a7 "\006", attrs=..., 
addr=49170, as=0x562ebfb52aa0 <address_space_io>) at 
/home/ehabkost/rh/proj/virt/qemu/exec.c:2556
#15 0x0000562ebf1f23b7 in address_space_write (as=0x562ebfb52aa0 
<address_space_io>, addr=<optimized out>, attrs=..., buf=<optimized out>, 
len=<optimized out>)
    at /home/ehabkost/rh/proj/virt/qemu/exec.c:2601
#16 0x0000562ebf1f295d in address_space_rw (as=<optimized out>, addr=<optimized 
out>, attrs=..., address@hidden "\006", address@hidden, address@hidden) at 
/home/ehabkost/rh/proj/virt/qemu/exec.c:2703
#17 0x0000562ebf1f61b6 in address_space_stb (as=<optimized out>, 
addr=<optimized out>, val=<optimized out>, attrs=..., address@hidden)
    at /home/ehabkost/rh/proj/virt/qemu/exec.c:3443
#18 0x0000562ebf2d6731 in helper_outb (env=<optimized out>, port=<optimized 
out>, data=<optimized out>) at 
/home/ehabkost/rh/proj/virt/qemu/target-i386/misc_helper.c:32
#19 0x00007f193a4b166d in code_gen_buffer ()
#20 0x0000562ebf1f96e3 in cpu_exec (itb=0x7f1937d85b50, itb=0x7f1937d85b50, 
cpu=0x562ec0199e80) at /home/ehabkost/rh/proj/virt/qemu/cpu-exec.c:166
#21 0x0000562ebf1f96e3 in cpu_exec (sc=0x7f1917a1c8e0, tb_exit=<synthetic 
pointer>, last_tb=<synthetic pointer>, tb=0x7f1937d85b50, cpu=0x562ec0199e80)
    at /home/ehabkost/rh/proj/virt/qemu/cpu-exec.c:530
#22 0x0000562ebf1f96e3 in cpu_exec (address@hidden) at 
/home/ehabkost/rh/proj/virt/qemu/cpu-exec.c:625
#23 0x0000562ebf21f66f in qemu_tcg_cpu_thread_fn (cpu=0x562ec0191c00) at 
/home/ehabkost/rh/proj/virt/qemu/cpus.c:1541
#24 0x0000562ebf21f66f in qemu_tcg_cpu_thread_fn () at 
/home/ehabkost/rh/proj/virt/qemu/cpus.c:1574
#25 0x0000562ebf21f66f in qemu_tcg_cpu_thread_fn (arg=<optimized out>) at 
/home/ehabkost/rh/proj/virt/qemu/cpus.c:1171
#26 0x00007f195417d5ca in start_thread () at /lib64/libpthread.so.0
#27 0x00007f194f0f4ead in clone () at /lib64/libc.so.6
(gdb) up
#2  0x0000562ebf27feb5 in vhost_user_set_mem_table (dev=0x562ec0189630, 
mem=<optimized out>) at 
/home/ehabkost/rh/proj/virt/qemu/hw/virtio/vhost-user.c:308
308             abort();
(gdb) p dev->mem->nregions 
$1 = 0
(gdb) 

-- 
Eduardo



reply via email to

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