On 3 June 2013 11:12, Paolo Bonzini <pbonz...@redhat.com> wrote: > 1) I could set the owner to NULL before calling the sysbus_init_mmio; > > 2) I could add a variant of sysbus_init_mmio that doesn't set the owner; > > 3) I could skip setting the owner for sysbus altogether, since it is > only strictly required for unpluggable devices.
4) you could set the owner at the right place, ie when the memory region is created. > However, I think there is worth in preserving the chain through either > containment or aliasing. From the nesting point of view, > realview_mpcore is exposing the region. From the implementor point of > view, arm_gic is implementing the region (and arm_gic is the one that > would be ref/unref'd at execution time). In either case, > arm11mpcore_priv is not what you want to see. Its presence is just an > implementation detail of realview_mpcore. I agree that the owner of the MR in this case should be arm_gic. For aliasing, surely you need to actually reference both devices? If the device that owns the container goes away then your MR* is toast anyway, and if the device doing the actual implementation goes away your MR* is also now invalid. So they have to both hang around long enough for you to finish whatever you were doing. thanks -- PMM