memory: Add internal memory_region_register_ram function
Factor out common operation from memory_region_init_{ram,rom} functions to register the region for migration. This avoids duplicating the long comment in several functions. Signed-off-by: BALATON Zoltan <balaton@eik.bme.hu> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> Link: https://lore.kernel.org/r/1f0bcb38e59456aa910376df6a375d63c2f3f442.1772924151.git.balaton@eik.bme.hu Signed-off-by: Peter Xu <peterx@redhat.com>
BALATON Zoltan committed
Mar 8, 2026 at 00:06 UTC
f0eca07fbd2560397ac52dcc2ee65b22741dc2e7
1 file changed
+23
-57
system/memory.c
+23
-57
@@ -3676,18 +3676,10 @@ void mtree_info(bool flatview, bool dispatch_tree, bool owner, bool disabled)
3676
}
3677
}
3678
3679
-bool memory_region_init_ram(MemoryRegion *mr,
3680
- Object *owner,
3681
- const char *name,
3682
- uint64_t size,
3683
- Error **errp)
3679
+static void memory_region_register_ram(MemoryRegion *mr, Object *owner)
3680
{
3681
DeviceState *owner_dev;
3682
3687
- if (!memory_region_init_ram_flags_nomigrate(mr, owner, name,
3688
- size, 0, errp)) {
3689
- return false;
3690
- }
3683
/* This will assert if owner is neither NULL nor a DeviceState.
3684
* We only want the owner here for the purposes of defining a
3685
* unique name for migration. TODO: Ideally we should implement
@@ -3696,68 +3688,50 @@ bool memory_region_init_ram(MemoryRegion *mr,
3688
*/
3689
owner_dev = DEVICE(owner);
3690
vmstate_register_ram(mr, owner_dev);
3691
+}
3692
3693
+bool memory_region_init_ram(MemoryRegion *mr, Object *owner,
3694
+ const char *name, uint64_t size,
3695
+ Error **errp)
3696
+{
3697
+ if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size, 0,
3698
+ errp)) {
3699
+ return false;
3700
+ }
3701
+ memory_region_register_ram(mr, owner);
3702
return true;
3703
}
3704
3703
-bool memory_region_init_ram_guest_memfd(MemoryRegion *mr,
3704
- Object *owner,
3705
- const char *name,
3706
- uint64_t size,
3705
+bool memory_region_init_ram_guest_memfd(MemoryRegion *mr, Object *owner,
3706
+ const char *name, uint64_t size,
3707
Error **errp)
3708
{
3709
- DeviceState *owner_dev;
3710
-
3709
if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size,
3710
RAM_GUEST_MEMFD, errp)) {
3711
return false;
3712
}
3715
- /* This will assert if owner is neither NULL nor a DeviceState.
3716
- * We only want the owner here for the purposes of defining a
3717
- * unique name for migration. TODO: Ideally we should implement
3718
- * a naming scheme for Objects which are not DeviceStates, in
3719
- * which case we can relax this restriction.
3720
- */
3721
- owner_dev = DEVICE(owner);
3722
- vmstate_register_ram(mr, owner_dev);
3723
-
3713
+ memory_region_register_ram(mr, owner);
3714
return true;
3715
}
3716
3727
-bool memory_region_init_rom(MemoryRegion *mr,
3728
- Object *owner,
3729
- const char *name,
3730
- uint64_t size,
3717
+bool memory_region_init_rom(MemoryRegion *mr, Object *owner,
3718
+ const char *name, uint64_t size,
3719
Error **errp)
3720
{
3733
- DeviceState *owner_dev;
3734
-
3735
- if (!memory_region_init_ram_flags_nomigrate(mr, owner, name,
3736
- size, 0, errp)) {
3721
+ if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size, 0,
3722
+ errp)) {
3723
return false;
3724
}
3725
mr->readonly = true;
3740
- /* This will assert if owner is neither NULL nor a DeviceState.
3741
- * We only want the owner here for the purposes of defining a
3742
- * unique name for migration. TODO: Ideally we should implement
3743
- * a naming scheme for Objects which are not DeviceStates, in
3744
- * which case we can relax this restriction.
3745
- */
3746
- owner_dev = DEVICE(owner);
3747
- vmstate_register_ram(mr, owner_dev);
3748
-
3726
+ memory_region_register_ram(mr, owner);
3727
return true;
3728
}
3729
3752
-bool memory_region_init_rom_device(MemoryRegion *mr,
3753
- Object *owner,
3754
- const MemoryRegionOps *ops,
3755
- void *opaque,
3756
- const char *name,
3757
- uint64_t size,
3730
+bool memory_region_init_rom_device(MemoryRegion *mr, Object *owner,
3731
+ const MemoryRegionOps *ops, void *opaque,
3732
+ const char *name, uint64_t size,
3733
Error **errp)
3734
{
3760
- DeviceState *owner_dev;
3735
Error *err = NULL;
3736
3737
assert(ops);
@@ -3771,15 +3745,7 @@ bool memory_region_init_rom_device(MemoryRegion *mr,
3745
error_propagate(errp, err);
3746
return false;
3747
}
3774
- /* This will assert if owner is neither NULL nor a DeviceState.
3775
- * We only want the owner here for the purposes of defining a
3776
- * unique name for migration. TODO: Ideally we should implement
3777
- * a naming scheme for Objects which are not DeviceStates, in
3778
- * which case we can relax this restriction.
3779
- */
3780
- owner_dev = DEVICE(owner);
3781
- vmstate_register_ram(mr, owner_dev);
3782
-
3748
+ memory_region_register_ram(mr, owner);
3749
return true;
3750
}
3751