qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Hot unplug of pci-serial-2x fails assertion
@ 2014-07-14 11:10 Markus Armbruster
  2014-07-14 11:44 ` Paolo Bonzini
  2014-07-14 11:48 ` Peter Crosthwaite
  0 siblings, 2 replies; 5+ messages in thread
From: Markus Armbruster @ 2014-07-14 11:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Gerd Hoffmann

Watch this:

    (qemu) chardev-add file,path=foo2,id=foo2
    (qemu) chardev-add file,path=foo3,id=foo3
    (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
    (qemu) device_del gg
    (qemu) upstream-qemu: /work/armbru/qemu/memory.c:1259: memory_region_finalize: Assertion `((&mr->subregions)->tqh_first == ((void *)0))' failed.

    Program received signal SIGABRT, Aborted.
    [Switching to Thread 0x7fffe2eb5700 (LWP 28433)]
    0x00007fffedef2c39 in raise () from /lib64/libc.so.6
    (gdb) bt
    #0  0x00007fffedef2c39 in raise () from /lib64/libc.so.6
    #1  0x00007fffedef4348 in abort () from /lib64/libc.so.6
    #2  0x00007fffedeebb96 in __assert_fail_base () from /lib64/libc.so.6
    #3  0x00007fffedeebc42 in __assert_fail () from /lib64/libc.so.6
    #4  0x00005555556443cd in memory_region_finalize (obj=<optimized out>)
        at /work/armbru/qemu/memory.c:1259
    #5  0x000055555583fdca in object_deinit (type=<optimized out>, 
        obj=0x5555563ee328) at /work/armbru/qemu/qom/object.c:408
    #6  object_finalize (data=0x5555563ee328) at /work/armbru/qemu/qom/object.c:421
    #7  object_unref (obj=0x5555563ee328) at /work/armbru/qemu/qom/object.c:729
    #8  0x000055555578f598 in multi_serial_pci_exit (dev=0x5555563edae0)
        at /work/armbru/qemu/hw/char/serial-pci.c:154
    #9  0x00005555557e4730 in pci_unregister_device (dev=<optimized out>)
        at /work/armbru/qemu/hw/pci/pci.c:909
    #10 0x00005555557913d4 in device_unrealize (dev=0x5555563edae0, 
        errp=0x7fffe2eb48c0) at /work/armbru/qemu/hw/core/qdev.c:196
    #11 0x000055555579288a in device_set_realized (obj=<optimized out>, 
        value=<optimized out>, errp=0x0) at /work/armbru/qemu/hw/core/qdev.c:885
    #12 0x000055555583eefe in property_set_bool (obj=0x5555563edae0, 
        v=<optimized out>, opaque=0x5555563c01f0, name=<optimized out>, errp=0x0)
        at /work/armbru/qemu/qom/object.c:1473
    #13 0x0000555555841837 in object_property_set_qobject (obj=0x5555563edae0, 
        value=<optimized out>, name=0x55555590e3d8 "realized", errp=0x0)
        at /work/armbru/qemu/qom/qom-qobject.c:24
    #14 0x0000555555840450 in object_property_set_bool (
        obj=obj@entry=0x5555563edae0, value=value@entry=false, 
        name=name@entry=0x55555590e3d8 "realized", errp=errp@entry=0x0)
        at /work/armbru/qemu/qom/object.c:888
    #15 0x00005555557910db in device_unparent (obj=0x5555563edae0)
        at /work/armbru/qemu/hw/core/qdev.c:1006
    #16 0x00005555558400c5 in object_unparent (obj=0x5555563edae0)
        at /work/armbru/qemu/qom/object.c:396
    #17 0x000055555576e3b6 in acpi_pcihp_eject_slot (s=<optimized out>, 
        bsel=<optimized out>, slots=<optimized out>)
        at /work/armbru/qemu/hw/acpi/pcihp.c:139
    #18 0x0000555555640bba in access_with_adjusted_size (addr=addr@entry=8, 
        value=value@entry=0x7fffe2eb4ab0, size=size@entry=4, 
        access_size_min=<optimized out>, access_size_max=<optimized out>, access=
        0x555555640e60 <memory_region_write_accessor>, mr=0x5555563f5e78)
        at /work/armbru/qemu/memory.c:481
    #19 0x0000555555645897 in memory_region_dispatch_write (size=4, data=16, 
        addr=8, mr=0x5555563f5e78) at /work/armbru/qemu/memory.c:1143
    #20 io_mem_write (mr=mr@entry=0x5555563f5e78, addr=8, val=<optimized out>, 
        size=4) at /work/armbru/qemu/memory.c:1976
    #21 0x000055555560fad3 in address_space_rw (
        as=0x555555d3ce80 <address_space_io>, addr=addr@entry=44552, 
        buf=0x7ffff7ff7000 "\020", len=len@entry=4, is_write=is_write@entry=true)
        at /work/armbru/qemu/exec.c:2054
    #22 0x000055555563ff18 in kvm_handle_io (count=1, size=4, 
        direction=<optimized out>, data=<optimized out>, port=44552)
        at /work/armbru/qemu/kvm-all.c:1597
    #23 kvm_cpu_exec (cpu=cpu@entry=0x5555563aaee0)
        at /work/armbru/qemu/kvm-all.c:1734
    #24 0x000055555562e2e2 in qemu_kvm_cpu_thread_fn (arg=0x5555563aaee0)
        at /work/armbru/qemu/cpus.c:874
    #25 0x00007ffff6bc7f33 in start_thread () from /lib64/libpthread.so.0
    #26 0x00007fffedfb1ded in clone () from /lib64/libc.so.6

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Hot unplug of pci-serial-2x fails assertion
  2014-07-14 11:10 [Qemu-devel] Hot unplug of pci-serial-2x fails assertion Markus Armbruster
@ 2014-07-14 11:44 ` Paolo Bonzini
  2014-07-14 12:23   ` Markus Armbruster
  2014-07-14 11:48 ` Peter Crosthwaite
  1 sibling, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2014-07-14 11:44 UTC (permalink / raw)
  To: Markus Armbruster, qemu-devel; +Cc: Gerd Hoffmann

Il 14/07/2014 13:10, Markus Armbruster ha scritto:
> Watch this:
>
>     (qemu) chardev-add file,path=foo2,id=foo2
>     (qemu) chardev-add file,path=foo3,id=foo3
>     (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
>     (qemu) device_del gg
>     (qemu) upstream-qemu: /work/armbru/qemu/memory.c:1259: memory_region_finalize: Assertion `((&mr->subregions)->tqh_first == ((void *)0))' failed.

I think this is a bug you had already reported, but 
http://permalink.gmane.org/gmane.comp.emulators.qemu/283063 fell through 
the cracks.

Paolo

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Hot unplug of pci-serial-2x fails assertion
  2014-07-14 11:10 [Qemu-devel] Hot unplug of pci-serial-2x fails assertion Markus Armbruster
  2014-07-14 11:44 ` Paolo Bonzini
@ 2014-07-14 11:48 ` Peter Crosthwaite
  2014-07-14 12:22   ` Markus Armbruster
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Crosthwaite @ 2014-07-14 11:48 UTC (permalink / raw)
  To: Markus Armbruster
  Cc: Paolo Bonzini, qemu-devel@nongnu.org Developers, Gerd Hoffmann

On Mon, Jul 14, 2014 at 9:10 PM, Markus Armbruster <armbru@redhat.com> wrote:
> Watch this:
>
>     (qemu) chardev-add file,path=foo2,id=foo2
>     (qemu) chardev-add file,path=foo3,id=foo3
>     (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
>     (qemu) device_del gg
>     (qemu) upstream-qemu: /work/armbru/qemu/memory.c:1259: memory_region_finalize: Assertion `((&mr->subregions)->tqh_first == ((void *)0))' failed.
>

Are there more specifics to reproduction? I'm struggling and I've
tried a few variants.

Curiously I can device_del gg repeatedly with seemingly no effect however:

pcrost@pcrost-K42F:~/qemu$ ./x86_64-softmmu/qemu-system-x86_64  -nographic
QEMU 2.0.91 monitor - type 'help' for more information
(qemu)  chardev-add file,path=foo2,id=foo2
(qemu)  chardev-add file,path=foo3,id=foo3
(qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
(qemu) device_del gg
(qemu) device_del gg
(qemu) device_del gg
(qemu) info qtree
bus: main-system-bus
  type System
  dev: hpet, id ""
    gpio-in "" 2
    gpio-out "" 1
    timers = 3 (0x3)
    msi = false
    hpet-intcap = 4 (0x4)
    irq 32
    mmio 00000000fed00000/0000000000000400
  dev: ioapic, id ""
    gpio-in "" 24
    irq 0
    mmio 00000000fec00000/0000000000001000
  dev: i440FX-pcihost, id ""
    pci-hole64-size = 18446744073709551615 (16 EiB)
    short_root_bus = 0 (0x0)
    irq 0
    bus: pci.0
      type PCI
      dev: pci-serial-2x, id "gg"
        chardev1 = "foo2"
        chardev2 = "foo3"
        prog_if = 2 (0x2)
        addr = 04.0
        romfile = ""
        rombar = 1 (0x1)
        multifunction = false
        command_serr_enable = true
        class Serial port, addr 00:04.0, pci id 1b36:0003 (sub 1af4:1100)
        bar 0: i/o at 0xffffffffffffffff [0xe]

Am I missing something?

Regards,
Peter

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Hot unplug of pci-serial-2x fails assertion
  2014-07-14 11:48 ` Peter Crosthwaite
@ 2014-07-14 12:22   ` Markus Armbruster
  0 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2014-07-14 12:22 UTC (permalink / raw)
  To: Peter Crosthwaite
  Cc: Paolo Bonzini, qemu-devel@nongnu.org Developers, Gerd Hoffmann

Peter Crosthwaite <peter.crosthwaite@xilinx.com> writes:

> On Mon, Jul 14, 2014 at 9:10 PM, Markus Armbruster <armbru@redhat.com> wrote:
>> Watch this:
>>
>>     (qemu) chardev-add file,path=foo2,id=foo2
>>     (qemu) chardev-add file,path=foo3,id=foo3
>>     (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
>>     (qemu) device_del gg
>>     (qemu) upstream-qemu: /work/armbru/qemu/memory.c:1259:
>> memory_region_finalize: Assertion `((&mr->subregions)->tqh_first ==
>> ((void *)0))' failed.
>>
>
> Are there more specifics to reproduction? I'm struggling and I've
> tried a few variants.
>
> Curiously I can device_del gg repeatedly with seemingly no effect however:
>
> pcrost@pcrost-K42F:~/qemu$ ./x86_64-softmmu/qemu-system-x86_64  -nographic
> QEMU 2.0.91 monitor - type 'help' for more information
> (qemu)  chardev-add file,path=foo2,id=foo2
> (qemu)  chardev-add file,path=foo3,id=foo3
> (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
> (qemu) device_del gg
> (qemu) device_del gg
> (qemu) device_del gg
> (qemu) info qtree
> bus: main-system-bus
>   type System
>   dev: hpet, id ""
>     gpio-in "" 2
>     gpio-out "" 1
>     timers = 3 (0x3)
>     msi = false
>     hpet-intcap = 4 (0x4)
>     irq 32
>     mmio 00000000fed00000/0000000000000400
>   dev: ioapic, id ""
>     gpio-in "" 24
>     irq 0
>     mmio 00000000fec00000/0000000000001000
>   dev: i440FX-pcihost, id ""
>     pci-hole64-size = 18446744073709551615 (16 EiB)
>     short_root_bus = 0 (0x0)
>     irq 0
>     bus: pci.0
>       type PCI
>       dev: pci-serial-2x, id "gg"
>         chardev1 = "foo2"
>         chardev2 = "foo3"
>         prog_if = 2 (0x2)
>         addr = 04.0
>         romfile = ""
>         rombar = 1 (0x1)
>         multifunction = false
>         command_serr_enable = true
>         class Serial port, addr 00:04.0, pci id 1b36:0003 (sub 1af4:1100)
>         bar 0: i/o at 0xffffffffffffffff [0xe]
>
> Am I missing something?

Is your guest running and honoring ACPI unplug requests?

See also Paolo's reply, which points to a patch.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] Hot unplug of pci-serial-2x fails assertion
  2014-07-14 11:44 ` Paolo Bonzini
@ 2014-07-14 12:23   ` Markus Armbruster
  0 siblings, 0 replies; 5+ messages in thread
From: Markus Armbruster @ 2014-07-14 12:23 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel, Gerd Hoffmann

Paolo Bonzini <pbonzini@redhat.com> writes:

> Il 14/07/2014 13:10, Markus Armbruster ha scritto:
>> Watch this:
>>
>>     (qemu) chardev-add file,path=foo2,id=foo2
>>     (qemu) chardev-add file,path=foo3,id=foo3
>>     (qemu) device_add id=gg,driver=pci-serial-2x,chardev1=foo2,chardev2=foo3
>>     (qemu) device_del gg
>>     (qemu) upstream-qemu: /work/armbru/qemu/memory.c:1259:
>> memory_region_finalize: Assertion `((&mr->subregions)->tqh_first ==
>> ((void *)0))' failed.
>
> I think this is a bug you had already reported, but
> http://permalink.gmane.org/gmane.comp.emulators.qemu/283063 fell
> through the cracks.

Oops :)

Thanks!

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2014-07-14 12:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-07-14 11:10 [Qemu-devel] Hot unplug of pci-serial-2x fails assertion Markus Armbruster
2014-07-14 11:44 ` Paolo Bonzini
2014-07-14 12:23   ` Markus Armbruster
2014-07-14 11:48 ` Peter Crosthwaite
2014-07-14 12:22   ` Markus Armbruster

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).