[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 45/66] memory: Introduce memory_region_init_ram_guest_memfd()
|
From: |
Xiaoyao Li |
|
Subject: |
[PATCH v4 45/66] memory: Introduce memory_region_init_ram_guest_memfd() |
|
Date: |
Wed, 24 Jan 2024 22:23:07 -0500 |
Introduce memory_region_init_ram_guest_memfd() to allocate private
guset memfd on the MemoryRegion initialization. It's for the use case of
TDVF, which must be private on TDX case.
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
---
include/exec/memory.h | 6 ++++++
system/memory.c | 27 +++++++++++++++++++++++++++
2 files changed, 33 insertions(+)
diff --git a/include/exec/memory.h b/include/exec/memory.h
index f25959f6d30f..3a7f41b030e8 100644
--- a/include/exec/memory.h
+++ b/include/exec/memory.h
@@ -1607,6 +1607,12 @@ bool memory_region_init_ram(MemoryRegion *mr,
uint64_t size,
Error **errp);
+bool memory_region_init_ram_guest_memfd(MemoryRegion *mr,
+ Object *owner,
+ const char *name,
+ uint64_t size,
+ Error **errp);
+
/**
* memory_region_init_rom: Initialize a ROM memory region.
*
diff --git a/system/memory.c b/system/memory.c
index 74f647f2e56f..41049d3e4c9a 100644
--- a/system/memory.c
+++ b/system/memory.c
@@ -3619,6 +3619,33 @@ 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;
+ }
+
+ memory_region_set_default_private(mr);
+
+ /* 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,
--
2.34.1
- Re: [PATCH v4 33/66] i386/tdx: Make memory type private by default, (continued)
- [PATCH v4 36/66] i386/tdvf: Introduce function to parse TDVF metadata, Xiaoyao Li, 2024/01/24
- [PATCH v4 35/66] kvm/tdx: Ignore memory conversion to shared of unassigned region, Xiaoyao Li, 2024/01/24
- [PATCH v4 37/66] i386/tdx: Parse TDVF metadata for TDX VM, Xiaoyao Li, 2024/01/24
- [PATCH v4 38/66] i386/tdx: Skip BIOS shadowing setup, Xiaoyao Li, 2024/01/24
- [PATCH v4 39/66] i386/tdx: Don't initialize pc.rom for TDX VMs, Xiaoyao Li, 2024/01/24
- [PATCH v4 40/66] i386/tdx: Track mem_ptr for each firmware entry of TDVF, Xiaoyao Li, 2024/01/24
- [PATCH v4 42/66] headers: Add definitions from UEFI spec for volumes, resources, etc..., Xiaoyao Li, 2024/01/24
- [PATCH v4 41/66] i386/tdx: Track RAM entries for TDX VM, Xiaoyao Li, 2024/01/24
- [PATCH v4 43/66] i386/tdx: Setup the TD HOB list, Xiaoyao Li, 2024/01/24
- [PATCH v4 45/66] memory: Introduce memory_region_init_ram_guest_memfd(),
Xiaoyao Li <=
- [PATCH v4 44/66] i386/tdx: Add TDVF memory via KVM_TDX_INIT_MEM_REGION, Xiaoyao Li, 2024/01/24
- [PATCH v4 48/66] i386/tdx: Finalize TDX VM, Xiaoyao Li, 2024/01/24
- [PATCH v4 49/66] i386/tdx: handle TDG.VP.VMCALL<SetupEventNotifyInterrupt>, Xiaoyao Li, 2024/01/24
- [PATCH v4 47/66] i386/tdx: Call KVM_TDX_INIT_VCPU to initialize TDX vcpu, Xiaoyao Li, 2024/01/24
- [PATCH v4 46/66] i386/tdx: register TDVF as private memory, Xiaoyao Li, 2024/01/24
- [PATCH v4 52/66] i386/tdx: Handle TDG.VP.VMCALL<REPORT_FATAL_ERROR>, Xiaoyao Li, 2024/01/24
- [PATCH v4 51/66] i386/tdx: handle TDG.VP.VMCALL<MapGPA> hypercall, Xiaoyao Li, 2024/01/24
- [PATCH v4 50/66] i386/tdx: handle TDG.VP.VMCALL<GetQuote>, Xiaoyao Li, 2024/01/24
- [PATCH v4 54/66] pci-host/q35: Move PAM initialization above SMRAM initialization, Xiaoyao Li, 2024/01/24