Il 14/07/2014 14:36, Peter Crosthwaite ha scritto:
On Thu, Jun 26, 2014 at 5:32 PM, Markus Armbruster <arm...@redhat.com> wrote:
Paolo Bonzini <pbonz...@redhat.com> writes:

Otherwise, hot-unplug of pci-serial-2x trips the assertion
in memory_region_destroy:

    (qemu) device_del gg
    (qemu) qemu-system-x86_64: /work/armbru/tmp/qemu/memory.c:1021: 
memory_region_destroy: Assertion `((&mr->subregions)->tqh_first == ((void 
*)0))' failed.
    Aborted (core dumped)

Reported-by: Markus Armbruster <arm...@redhat.com>
Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>

Reviewed-by: Markus Armbruster <arm...@redhat.com>


Reviewed-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com>

Would it make sense to add a "must not contain subregions" to
memory_region_destroy()'s function comment?


Any reason to just not patch the memory region finaliser to unparent

Note that unparent for memory regions is _not_ memory_region_del_subregion. It is memory_region_destroy.

The parent object of a memory region is a device; the _container_ of a memory region is another memory region.

all contained subregions automatically rather than assert? Destroying
a container should imply removing the subregion relationship and
simply orphan the subregion.

This makes sense since we will soon make memory_region_destroy optional (devices will automatically destroy their memory regions). Before QOMification, however, I think the assert was a useful debugging tool, guaranteeing that owners of memory regions were destroyed in the right order. So we could indeed revisit this in 2.2 and make memory_region_del_subregion also optional.

Paolo

Reply via email to