mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
memory: MemoryRegion: factor out subregion add functionality
Split off the core looping code that actually adds subregions into it's own fn. This prepares support for Memory Region qomification where setting the MR address or parent via QOM will back onto this more minimal function. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> [Rename new function. - Paolo] Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
c9299e2fe7
commit
0598701a49
1 changed files with 12 additions and 6 deletions
18
memory.c
18
memory.c
|
@ -1423,18 +1423,15 @@ void memory_region_del_eventfd(MemoryRegion *mr,
|
|||
memory_region_transaction_commit();
|
||||
}
|
||||
|
||||
static void memory_region_add_subregion_common(MemoryRegion *mr,
|
||||
hwaddr offset,
|
||||
MemoryRegion *subregion)
|
||||
static void memory_region_update_parent_subregions(MemoryRegion *subregion)
|
||||
{
|
||||
hwaddr offset = subregion->addr;
|
||||
MemoryRegion *mr = subregion->parent;
|
||||
MemoryRegion *other;
|
||||
|
||||
memory_region_transaction_begin();
|
||||
|
||||
assert(!subregion->parent);
|
||||
memory_region_ref(subregion);
|
||||
subregion->parent = mr;
|
||||
subregion->addr = offset;
|
||||
QTAILQ_FOREACH(other, &mr->subregions, subregions_link) {
|
||||
if (subregion->may_overlap || other->may_overlap) {
|
||||
continue;
|
||||
|
@ -1468,6 +1465,15 @@ done:
|
|||
memory_region_transaction_commit();
|
||||
}
|
||||
|
||||
static void memory_region_add_subregion_common(MemoryRegion *mr,
|
||||
hwaddr offset,
|
||||
MemoryRegion *subregion)
|
||||
{
|
||||
assert(!subregion->parent);
|
||||
subregion->parent = mr;
|
||||
subregion->addr = offset;
|
||||
memory_region_update_parent_subregions(subregion);
|
||||
}
|
||||
|
||||
void memory_region_add_subregion(MemoryRegion *mr,
|
||||
hwaddr offset,
|
||||
|
|
Loading…
Reference in a new issue