Re: [PATCH v3 2/9] igvm: track memory regions
Alexander Graf <[email protected]>
| Newsgroups | org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
On 30.07.26 09:12, Ani Sinha wrote: > From: Gerd Hoffmann <[email protected]> > > Memory regions added by the current IGVM needs to be tracked so that they can be > freed when a new IGVM is loaded. > > Reviewed-by: Ani Sinha <[email protected]> > Signed-off-by: Gerd Hoffmann <[email protected]> > --- > backends/igvm-cfg.c | 1 + > backends/igvm.c | 20 ++++++++++++-------- > include/system/igvm-internal.h | 6 ++++++ > 3 files changed, 19 insertions(+), 8 deletions(-) > > diff --git a/backends/igvm-cfg.c b/backends/igvm-cfg.c > index e1f09855f6..38438a7b1e 100644 > --- a/backends/igvm-cfg.c > +++ b/backends/igvm-cfg.c > @@ -65,6 +65,7 @@ static void igvm_complete(UserCreatable *uc, Error **errp) > IgvmCfg *igvm = IGVM_CFG(uc); > > igvm->file = qigvm_file_init(igvm->filename, errp); > + QTAILQ_INIT(&igvm->memory_regions); > } > > OBJECT_DEFINE_TYPE_WITH_INTERFACES(IgvmCfg, igvm_cfg, IGVM_CFG, OBJECT, > diff --git a/backends/igvm.c b/backends/igvm.c > index 534032fed8..9e7c90d386 100644 > --- a/backends/igvm.c > +++ b/backends/igvm.c > @@ -220,7 +220,7 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_t addr, uint64_t size, > int region_identifier, Error **errp) > { > ERRP_GUARD(); > - MemoryRegion *igvm_pages = NULL; > + IgvmMemoryRegion *imr = NULL; > Int128 gpa_region_size; > MemoryRegionSection mrs = > memory_region_find(get_system_memory(), addr, size); > @@ -254,23 +254,27 @@ static void *qigvm_prepare_memory(QIgvm *ctx, uint64_t addr, uint64_t size, > */ > g_autofree char *region_name = > g_strdup_printf("igvm.%X", region_identifier); > - igvm_pages = g_new0(MemoryRegion, 1); > + imr = g_new0(IgvmMemoryRegion, 1); > + imr->mr = g_new0(MemoryRegion, 1); > if (ctx->machine_state->cgs && > ctx->machine_state->cgs->require_guest_memfd) { > - if (!memory_region_init_ram_guest_memfd(igvm_pages, NULL, > + if (!memory_region_init_ram_guest_memfd(imr->mr, NULL, Please make sure to track them with owner set to OBJECT(ctx->machine_state). Without owner, reference counting is disabled and we end up leaking memory regions on cleanup you introduce in patch 3 later. Alex