@samitouri / QOSamiQemu / commits / f0eca07fbd

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