|
@@ -3649,6 +3649,30 @@ bool memory_region_init_ram(MemoryRegion *mr,
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+bool memory_region_init_ram_guest_memfd(MemoryRegion *mr,
|
|
|
+ Object *owner,
|
|
|
+ const char *name,
|
|
|
+ uint64_t size,
|
|
|
+ Error **errp)
|
|
|
+{
|
|
|
+ DeviceState *owner_dev;
|
|
|
+
|
|
|
+ if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size,
|
|
|
+ RAM_GUEST_MEMFD, errp)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ /* This will assert if owner is neither NULL nor a DeviceState.
|
|
|
+ * We only want the owner here for the purposes of defining a
|
|
|
+ * unique name for migration. TODO: Ideally we should implement
|
|
|
+ * a naming scheme for Objects which are not DeviceStates, in
|
|
|
+ * which case we can relax this restriction.
|
|
|
+ */
|
|
|
+ owner_dev = DEVICE(owner);
|
|
|
+ vmstate_register_ram(mr, owner_dev);
|
|
|
+
|
|
|
+ return true;
|
|
|
+}
|
|
|
+
|
|
|
bool memory_region_init_rom(MemoryRegion *mr,
|
|
|
Object *owner,
|
|
|
const char *name,
|