From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574516802978.8967485872532; Tue, 3 Mar 2026 13:48:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXaz-0003OJ-Rj; Tue, 03 Mar 2026 16:48:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXax-0003NT-Rv for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:47:59 -0500 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXav-0000El-5Z for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:47:59 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 16541596A1A; Tue, 03 Mar 2026 22:47:53 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id mREDj2yOWo_6; Tue, 3 Mar 2026 22:47:51 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id F0025596A10; Tue, 03 Mar 2026 22:47:50 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 1/8] hw/display/{cg3.tcx}: Do not use memory_region_init_rom_nomigrate() MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:50 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.322, RCVD_IN_VALIDITY_SAFE_BLOCKED=1.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574519016139100 Content-Type: text/plain; charset="utf-8" Use memory_region_init_rom() instead which is what other devices do. This breaks migration but these devices are only used by sparc Sun machines which have no migration compatibility guarantee. Signed-off-by: BALATON Zoltan Reviewed-by: Peter Maydell --- hw/display/cg3.c | 5 ++--- hw/display/tcx.c | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/hw/display/cg3.c b/hw/display/cg3.c index 568d6048a6..61bdb0552e 100644 --- a/hw/display/cg3.c +++ b/hw/display/cg3.c @@ -282,8 +282,8 @@ static void cg3_initfn(Object *obj) SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); CG3State *s =3D CG3(obj); =20 - memory_region_init_rom_nomigrate(&s->rom, obj, "cg3.prom", - FCODE_MAX_ROM_SIZE, &error_fatal); + memory_region_init_rom(&s->rom, obj, "cg3.prom", FCODE_MAX_ROM_SIZE, + &error_fatal); sysbus_init_mmio(sbd, &s->rom); =20 memory_region_init_io(&s->reg, obj, &cg3_reg_ops, s, "cg3.reg", @@ -299,7 +299,6 @@ static void cg3_realizefn(DeviceState *dev, Error **err= p) char *fcode_filename; =20 /* FCode ROM */ - vmstate_register_ram_global(&s->rom); fcode_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, CG3_ROM_FILE); if (fcode_filename) { ret =3D load_image_mr(fcode_filename, &s->rom); diff --git a/hw/display/tcx.c b/hw/display/tcx.c index 36cad82abd..16114b9bb8 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -756,8 +756,8 @@ static void tcx_initfn(Object *obj) SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); TCXState *s =3D TCX(obj); =20 - memory_region_init_rom_nomigrate(&s->rom, obj, "tcx.prom", - FCODE_MAX_ROM_SIZE, &error_fatal); + memory_region_init_rom(&s->rom, obj, "tcx.prom", FCODE_MAX_ROM_SIZE, + &error_fatal); sysbus_init_mmio(sbd, &s->rom); =20 /* 2/STIP : Stippler */ @@ -822,7 +822,6 @@ static void tcx_realizefn(DeviceState *dev, Error **err= p) vram_base =3D memory_region_get_ram_ptr(&s->vram_mem); =20 /* 10/ROM : FCode ROM */ - vmstate_register_ram_global(&s->rom); fcode_filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, TCX_ROM_FILE); if (fcode_filename) { ret =3D load_image_mr(fcode_filename, &s->rom); --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574521734376.4561028034493; Tue, 3 Mar 2026 13:48:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXb0-0003OR-Fo; Tue, 03 Mar 2026 16:48:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXay-0003O4-UJ for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:00 -0500 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXaw-0000Ew-2U for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:00 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 29996596A10; Tue, 03 Mar 2026 22:47:54 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id 72FtCQS9rJ2K; Tue, 3 Mar 2026 22:47:52 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 184A85969F2; Tue, 03 Mar 2026 22:47:52 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <1b266a44078c1e10d5253fe44d73821f61bd3d29.1772572714.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 2/8] memory: Remove memory_region_init_rom_nomigrate() MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:52 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574524819158500 Content-Type: text/plain; charset="utf-8" All users were converted so no longer needed. Signed-off-by: BALATON Zoltan Reviewed-by: Peter Maydell --- docs/devel/memory.rst | 1 - include/system/memory.h | 26 ----------------- .../memory-region-housekeeping.cocci | 28 ------------------- system/memory.c | 19 ++----------- 4 files changed, 3 insertions(+), 71 deletions(-) diff --git a/docs/devel/memory.rst b/docs/devel/memory.rst index 8558f70a42..0bb5acab21 100644 --- a/docs/devel/memory.rst +++ b/docs/devel/memory.rst @@ -113,7 +113,6 @@ have a special case where you need to manage the migrat= ion of the backing memory yourself, you can call the functions: =20 - memory_region_init_ram_nomigrate() -- memory_region_init_rom_nomigrate() =20 which only initialize the MemoryRegion and leave handling migration to the caller. diff --git a/include/system/memory.h b/include/system/memory.h index 0562af3136..7117699b10 100644 --- a/include/system/memory.h +++ b/include/system/memory.h @@ -1588,32 +1588,6 @@ void memory_region_init_alias(MemoryRegion *mr, hwaddr offset, uint64_t size); =20 -/** - * memory_region_init_rom_nomigrate: Initialize a ROM memory region. - * - * This has the same effect as calling memory_region_init_ram_nomigrate() - * and then marking the resulting region read-only with - * memory_region_set_readonly(). - * - * Note that this function does not do anything to cause the data in the - * RAM side of the memory region to be migrated; that is the responsibility - * of the caller. - * - * @mr: the #MemoryRegion to be initialized. - * @owner: the object that tracks the region's reference count - * @name: Region name, becomes part of RAMBlock name used in migration str= eam - * must be unique within any device - * @size: size of the region. - * @errp: pointer to Error*, to store an error if it happens. - * - * Return: true on success, else false setting @errp with error. - */ -bool memory_region_init_rom_nomigrate(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - Error **errp); - /** * memory_region_init_iommu: Initialize a memory region of a custom type * that translates addresses diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/= coccinelle/memory-region-housekeeping.cocci index 7f89e9712e..e45703141a 100644 --- a/scripts/coccinelle/memory-region-housekeeping.cocci +++ b/scripts/coccinelle/memory-region-housekeeping.cocci @@ -16,17 +16,10 @@ expression E1, E2, E3, E4, E5; symbol true; @@ -( - memory_region_init_ram(E1, E2, E3, E4, E5); + memory_region_init_rom(E1, E2, E3, E4, E5); ... WHEN !=3D E1 - memory_region_set_readonly(E1, true); -| -- memory_region_init_ram_nomigrate(E1, E2, E3, E4, E5); -+ memory_region_init_rom_nomigrate(E1, E2, E3, E4, E5); - ... WHEN !=3D E1 -- memory_region_set_readonly(E1, true); -) =20 =20 @possible_memory_region_init_rom@ @@ -53,11 +46,7 @@ cocci.print_main("potential use of memory_region_init_ro= m*() in ", p) expression ROM, E1, E2, E3, E4; expression ALIAS, E5, E6, E7, E8; @@ -( memory_region_init_rom(ROM, E1, E2, E3, E4); -| - memory_region_init_rom_nomigrate(ROM, E1, E2, E3, E4); -) ... memory_region_init_alias(ALIAS, E5, E6, ROM, E7, E8); - memory_region_set_readonly(ALIAS, true); @@ -80,23 +69,6 @@ expression ERRP; ... -vmstate_register_ram_global(MR); @@ -expression MR; -expression NAME; -expression SIZE; -expression ERRP; -@@ --memory_region_init_rom_nomigrate(MR, NULL, NAME, SIZE, ERRP); -+memory_region_init_rom(MR, NULL, NAME, SIZE, ERRP); - ... --vmstate_register_ram_global(MR); -@@ -expression MR; -expression OPS; -expression OPAQUE; -expression NAME; -expression SIZE; -expression ERRP; -@@ typedef DeviceState; identifier device_fn, dev, obj; expression E1, E2, E3, E4, E5; diff --git a/system/memory.c b/system/memory.c index c51d0798a8..65042bd9fa 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1738,21 +1738,6 @@ void memory_region_init_alias(MemoryRegion *mr, mr->alias_offset =3D offset; } =20 -bool memory_region_init_rom_nomigrate(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - Error **errp) -{ - if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, - size, 0, errp)) { - return false; - } - mr->readonly =3D true; - - return true; -} - void memory_region_init_iommu(void *_iommu_mr, size_t instance_size, const char *mrtypename, @@ -3757,9 +3742,11 @@ bool memory_region_init_rom(MemoryRegion *mr, { DeviceState *owner_dev; =20 - if (!memory_region_init_rom_nomigrate(mr, owner, name, size, errp)) { + if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, + size, 0, errp)) { return false; } + mr->readonly =3D true; /* 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 --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574521519601.1144749725275; Tue, 3 Mar 2026 13:48:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXb0-0003OP-FO; Tue, 03 Mar 2026 16:48:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXax-0003NW-S5 for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:47:59 -0500 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXav-0000FD-GU for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:47:59 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 294D6597308; Tue, 03 Mar 2026 22:47:55 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id MRKp_fnoVVGf; Tue, 3 Mar 2026 22:47:53 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 22982596A0A; Tue, 03 Mar 2026 22:47:53 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <5a9141b551749832964422d3df74045ee04a4ff6.1772572714.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 3/8] sun4m,sun4u,tcx: Do not use memory_region_init_ram_nomigrate() MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:53 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574523562139100 Content-Type: text/plain; charset="utf-8" Convert to use memory_region_init_{ram,rom} instead. This breaks migration but these machines have no migration compatibility guarantee and this removes most remaining usages of this nomigrate variant. Signed-off-by: BALATON Zoltan Reviewed-by: Peter Maydell --- hw/display/tcx.c | 3 +-- hw/sparc/sun4m.c | 19 +++++-------------- hw/sparc64/sun4u.c | 10 +++------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/hw/display/tcx.c b/hw/display/tcx.c index 16114b9bb8..c8a4ac21ca 100644 --- a/hw/display/tcx.c +++ b/hw/display/tcx.c @@ -815,9 +815,8 @@ static void tcx_realizefn(DeviceState *dev, Error **err= p) uint8_t *vram_base; char *fcode_filename; =20 - memory_region_init_ram_nomigrate(&s->vram_mem, OBJECT(s), "tcx.vram", + memory_region_init_ram(&s->vram_mem, OBJECT(s), "tcx.vram", s->vram_size * (1 + 4 + 4), &error_fatal); - vmstate_register_ram_global(&s->vram_mem); memory_region_set_log(&s->vram_mem, true, DIRTY_MEMORY_VGA); vram_base =3D memory_region_get_ram_ptr(&s->vram_mem); =20 diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index a17bdb3692..47853e3f76 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -587,13 +587,10 @@ static void idreg_realize(DeviceState *ds, Error **er= rp) IDRegState *s =3D MACIO_ID_REGISTER(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); =20 - if (!memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.idre= g", - sizeof(idreg_data), errp)) { + if (!memory_region_init_rom(&s->mem, OBJECT(ds), "sun4m.idreg", + sizeof(idreg_data), errp)) { return; } - - vmstate_register_ram_global(&s->mem); - memory_region_set_readonly(&s->mem, true); sysbus_init_mmio(dev, &s->mem); } =20 @@ -638,12 +635,9 @@ static void afx_realize(DeviceState *ds, Error **errp) AFXState *s =3D TCX_AFX(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); =20 - if (!memory_region_init_ram_nomigrate(&s->mem, OBJECT(ds), "sun4m.afx", - 4, errp)) { + if (!memory_region_init_ram(&s->mem, OBJECT(ds), "sun4m.afx", 4, errp)= ) { return; } - - vmstate_register_ram_global(&s->mem); sysbus_init_mmio(dev, &s->mem); } =20 @@ -719,13 +713,10 @@ static void prom_realize(DeviceState *ds, Error **err= p) PROMState *s =3D OPENPROM(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); =20 - if (!memory_region_init_ram_nomigrate(&s->prom, OBJECT(ds), "sun4m.pro= m", - PROM_SIZE_MAX, errp)) { + if (!memory_region_init_rom(&s->prom, OBJECT(ds), "sun4m.prom", + PROM_SIZE_MAX, errp)) { return; } - - vmstate_register_ram_global(&s->prom); - memory_region_set_readonly(&s->prom, true); sysbus_init_mmio(dev, &s->prom); } =20 diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index b8bda1eb81..2e41785b78 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -455,13 +455,10 @@ static void prom_realize(DeviceState *ds, Error **err= p) PROMState *s =3D OPENPROM(ds); SysBusDevice *dev =3D SYS_BUS_DEVICE(ds); =20 - if (!memory_region_init_ram_nomigrate(&s->prom, OBJECT(ds), "sun4u.pro= m", - PROM_SIZE_MAX, errp)) { + if (!memory_region_init_rom(&s->prom, OBJECT(ds), "sun4u.prom", + PROM_SIZE_MAX, errp)) { return; } - - vmstate_register_ram_global(&s->prom); - memory_region_set_readonly(&s->prom, true); sysbus_init_mmio(dev, &s->prom); } =20 @@ -498,9 +495,8 @@ static void ram_realize(DeviceState *dev, Error **errp) RamDevice *d =3D SUN4U_RAM(dev); SysBusDevice *sbd =3D SYS_BUS_DEVICE(dev); =20 - memory_region_init_ram_nomigrate(&d->ram, OBJECT(d), "sun4u.ram", d->s= ize, + memory_region_init_ram(&d->ram, OBJECT(d), "sun4u.ram", d->size, &error_fatal); - vmstate_register_ram_global(&d->ram); sysbus_init_mmio(sbd, &d->ram); } =20 --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574496983265.61394729057326; Tue, 3 Mar 2026 13:48:16 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXaz-0003OI-R5; Tue, 03 Mar 2026 16:48:02 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXay-0003Nt-IN for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:00 -0500 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXav-0000FS-Mz for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:00 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 308CF597319; Tue, 03 Mar 2026 22:47:56 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id Y6UHhpdOKSyA; Tue, 3 Mar 2026 22:47:54 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 2DF0859703F; Tue, 03 Mar 2026 22:47:54 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 4/8] system/memory: Reduce memory_region_init_ram_nomigrate() usage MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:54 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.322, RCVD_IN_VALIDITY_SAFE_BLOCKED=1.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574501512158500 Content-Type: text/plain; charset="utf-8" This function is kept until the last two usages can be removed but convert the last usage in memory.c and remove it from the documentation. Signed-off-by: BALATON Zoltan --- docs/devel/memory.rst | 8 +++----- .../memory-region-housekeeping.cocci | 19 ------------------- system/memory.c | 3 ++- 3 files changed, 5 insertions(+), 25 deletions(-) diff --git a/docs/devel/memory.rst b/docs/devel/memory.rst index 0bb5acab21..9083b18f08 100644 --- a/docs/devel/memory.rst +++ b/docs/devel/memory.rst @@ -110,11 +110,9 @@ migrated: =20 For most devices and boards this is the correct thing. If you have a special case where you need to manage the migration of -the backing memory yourself, you can call the functions: - -- memory_region_init_ram_nomigrate() - -which only initialize the MemoryRegion and leave handling +the backing memory yourself, you can call the function +memory_region_init_ram_flags_nomigrate() +which only initializes the MemoryRegion and leaves handling migration to the caller. =20 The functions: diff --git a/scripts/coccinelle/memory-region-housekeeping.cocci b/scripts/= coccinelle/memory-region-housekeeping.cocci index e45703141a..b23647a3d8 100644 --- a/scripts/coccinelle/memory-region-housekeeping.cocci +++ b/scripts/coccinelle/memory-region-housekeeping.cocci @@ -26,15 +26,9 @@ symbol true; expression E1, E2, E3, E4, E5; position p; @@ -( memory_region_init_ram@p(E1, E2, E3, E4, E5); ... memory_region_set_readonly(E1, true); -| - memory_region_init_ram_nomigrate@p(E1, E2, E3, E4, E5); - ... - memory_region_set_readonly(E1, true); -) @script:python@ p << possible_memory_region_init_rom.p; @@ @@ -52,23 +46,10 @@ expression ALIAS, E5, E6, E7, E8; - memory_region_set_readonly(ALIAS, true); =20 =20 -// Replace by-hand memory_region_init_ram_nomigrate/vmstate_register_ram -// code sequences with use of the new memory_region_init_ram function. -// Similarly for the _rom and _rom_device functions. // We don't try to replace sequences with a non-NULL owner, because // there are none in the tree that can be automatically converted // (and only a handful that can be manually converted). @@ -expression MR; -expression NAME; -expression SIZE; -expression ERRP; -@@ --memory_region_init_ram_nomigrate(MR, NULL, NAME, SIZE, ERRP); -+memory_region_init_ram(MR, NULL, NAME, SIZE, ERRP); - ... --vmstate_register_ram_global(MR); -@@ typedef DeviceState; identifier device_fn, dev, obj; expression E1, E2, E3, E4, E5; diff --git a/system/memory.c b/system/memory.c index 65042bd9fa..e8c4912a60 100644 --- a/system/memory.c +++ b/system/memory.c @@ -3695,7 +3695,8 @@ bool memory_region_init_ram(MemoryRegion *mr, { DeviceState *owner_dev; =20 - if (!memory_region_init_ram_nomigrate(mr, owner, name, size, errp)) { + if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, + size, 0, errp)) { return false; } /* This will assert if owner is neither NULL nor a DeviceState. --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574535219402.25705371093943; Tue, 3 Mar 2026 13:48:55 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXb8-0003SN-Vz; Tue, 03 Mar 2026 16:48:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXb1-0003PO-Kl for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:08 -0500 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXay-0000GV-S3 for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:03 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 43818597390; Tue, 03 Mar 2026 22:47:57 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id 4MaZ-cvOOJhD; Tue, 3 Mar 2026 22:47:55 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 396AA597317; Tue, 03 Mar 2026 22:47:55 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <3122a5855dffd8df81f7552d4a11190c4d0a0403.1772572714.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 5/8] memory: Factor out common ram region initialization MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:55 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.322, RCVD_IN_VALIDITY_SAFE_BLOCKED=1.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574537158139100 Content-Type: text/plain; charset="utf-8" Introduce internal helper functions to remove duplicated code from different memory_region_init_*ram functions. Signed-off-by: BALATON Zoltan --- system/memory.c | 132 ++++++++++++++++++------------------------------ 1 file changed, 50 insertions(+), 82 deletions(-) diff --git a/system/memory.c b/system/memory.c index e8c4912a60..1b26c6b5a5 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1589,19 +1589,16 @@ bool memory_region_init_ram_nomigrate(MemoryRegion = *mr, size, 0, errp); } =20 -bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - uint32_t ram_flags, - Error **errp) +static void memory_region_setup_ram(MemoryRegion *mr) { - Error *err =3D NULL; - memory_region_init(mr, owner, name, size); mr->ram =3D true; mr->terminates =3D true; mr->destructor =3D memory_region_destructor_ram; - mr->ram_block =3D qemu_ram_alloc(size, ram_flags, mr, &err); +} + +static bool memory_region_error_propagate(MemoryRegion *mr, + Error *err, Error **errp) +{ if (err) { mr->size =3D int128_zero(); object_unparent(OBJECT(mr)); @@ -1611,6 +1608,18 @@ bool memory_region_init_ram_flags_nomigrate(MemoryRe= gion *mr, return true; } =20 +bool memory_region_init_ram_flags_nomigrate(MemoryRegion *mr, Object *owne= r, + const char *name, uint64_t siz= e, + uint32_t ram_flags, Error **er= rp) +{ + Error *err =3D NULL; + + memory_region_init(mr, owner, name, size); + memory_region_setup_ram(mr); + mr->ram_block =3D qemu_ram_alloc(size, ram_flags, mr, &err); + return memory_region_error_propagate(mr, err, errp); +} + bool memory_region_init_resizeable_ram(MemoryRegion *mr, Object *owner, const char *name, @@ -1622,108 +1631,69 @@ bool memory_region_init_resizeable_ram(MemoryRegio= n *mr, Error **errp) { Error *err =3D NULL; + memory_region_init(mr, owner, name, size); - mr->ram =3D true; - mr->terminates =3D true; - mr->destructor =3D memory_region_destructor_ram; - mr->ram_block =3D qemu_ram_alloc_resizeable(size, max_size, resized, - mr, &err); - if (err) { - mr->size =3D int128_zero(); - object_unparent(OBJECT(mr)); - error_propagate(errp, err); - return false; - } - return true; + memory_region_setup_ram(mr); + mr->ram_block =3D qemu_ram_alloc_resizeable(size, max_size, resized, m= r, + &err); + return memory_region_error_propagate(mr, err, errp); } =20 #if defined(CONFIG_POSIX) && !defined(EMSCRIPTEN) -bool memory_region_init_ram_from_file(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - uint64_t align, - uint32_t ram_flags, - const char *path, - ram_addr_t offset, +bool memory_region_init_ram_from_file(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, + uint64_t align, uint32_t ram_flags, + const char *path, ram_addr_t offset, Error **errp) { Error *err =3D NULL; + memory_region_init(mr, owner, name, size); - mr->ram =3D true; + memory_region_setup_ram(mr); mr->readonly =3D !!(ram_flags & RAM_READONLY); - mr->terminates =3D true; - mr->destructor =3D memory_region_destructor_ram; mr->align =3D align; - mr->ram_block =3D qemu_ram_alloc_from_file(size, mr, ram_flags, path, - offset, &err); - if (err) { - mr->size =3D int128_zero(); - object_unparent(OBJECT(mr)); - error_propagate(errp, err); - return false; - } - return true; + mr->ram_block =3D qemu_ram_alloc_from_file(size, mr, ram_flags, path, = offset, + &err); + return memory_region_error_propagate(mr, err, errp); } =20 -bool memory_region_init_ram_from_fd(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - uint32_t ram_flags, - int fd, - ram_addr_t offset, - Error **errp) +bool memory_region_init_ram_from_fd(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, + uint32_t ram_flags, int fd, + ram_addr_t offset, Error **errp) { Error *err =3D NULL; + memory_region_init(mr, owner, name, size); - mr->ram =3D true; + memory_region_setup_ram(mr); mr->readonly =3D !!(ram_flags & RAM_READONLY); - mr->terminates =3D true; - mr->destructor =3D memory_region_destructor_ram; mr->ram_block =3D qemu_ram_alloc_from_fd(size, size, NULL, mr, ram_fla= gs, fd, offset, false, &err); - if (err) { - mr->size =3D int128_zero(); - object_unparent(OBJECT(mr)); - error_propagate(errp, err); - return false; - } - return true; + return memory_region_error_propagate(mr, err, errp); } #endif =20 -void memory_region_init_ram_ptr(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - void *ptr) +void memory_region_init_ram_ptr(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, void *ptr) { memory_region_init(mr, owner, name, size); - mr->ram =3D true; - mr->terminates =3D true; - mr->destructor =3D memory_region_destructor_ram; - + memory_region_setup_ram(mr); /* qemu_ram_alloc_from_ptr cannot fail with ptr !=3D NULL. */ assert(ptr !=3D NULL); mr->ram_block =3D qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort); } =20 -void memory_region_init_ram_device_ptr(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, +void memory_region_init_ram_device_ptr(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, void *ptr) { memory_region_init(mr, owner, name, size); - mr->ram =3D true; - mr->ram_device =3D true; memory_region_set_ops(mr, &ram_device_mem_ops, mr); - mr->destructor =3D memory_region_destructor_ram; - + memory_region_setup_ram(mr); /* qemu_ram_alloc_from_ptr cannot fail with ptr !=3D NULL. */ assert(ptr !=3D NULL); mr->ram_block =3D qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort); + mr->ram_device =3D true; } =20 void memory_region_init_alias(MemoryRegion *mr, @@ -3774,15 +3744,13 @@ bool memory_region_init_rom_device(MemoryRegion *mr, assert(ops); memory_region_init(mr, owner, name, size); memory_region_set_ops(mr, ops, opaque); - mr->rom_device =3D true; - mr->destructor =3D memory_region_destructor_ram; + memory_region_setup_ram(mr); mr->ram_block =3D qemu_ram_alloc(size, 0, mr, &err); - if (err) { - mr->size =3D int128_zero(); - object_unparent(OBJECT(mr)); - error_propagate(errp, err); + if (!memory_region_error_propagate(mr, err, errp)) { return false; } + mr->ram =3D false; + mr->rom_device =3D true; /* 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 --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574542649809.8191051123237; Tue, 3 Mar 2026 13:49:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXbA-0003TH-TV; Tue, 03 Mar 2026 16:48:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXb0-0003OQ-EZ for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:02 -0500 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXay-0000GT-O6 for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:02 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 48105597395; Tue, 03 Mar 2026 22:47:58 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id PxeYMfPWmMQ1; Tue, 3 Mar 2026 22:47:56 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 44CBC59738F; Tue, 03 Mar 2026 22:47:56 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 6/8] memory: Add internal memory_region_register_ram function MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:56 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574543659158500 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 Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- system/memory.c | 76 ++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 55 deletions(-) diff --git a/system/memory.c b/system/memory.c index 1b26c6b5a5..f75ca015a9 100644 --- a/system/memory.c +++ b/system/memory.c @@ -3657,18 +3657,10 @@ void mtree_info(bool flatview, bool dispatch_tree, = bool owner, bool disabled) } } =20 -bool memory_region_init_ram(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, - Error **errp) +static void memory_region_register_ram(MemoryRegion *mr, Object *owner) { DeviceState *owner_dev; =20 - if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, - size, 0, 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 @@ -3677,68 +3669,50 @@ bool memory_region_init_ram(MemoryRegion *mr, */ owner_dev =3D DEVICE(owner); vmstate_register_ram(mr, owner_dev); +} =20 +bool memory_region_init_ram(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, + Error **errp) +{ + if (!memory_region_init_ram_flags_nomigrate(mr, owner, name, size, + 0, errp)) { + return false; + } + memory_region_register_ram(mr, owner); return true; } =20 -bool memory_region_init_ram_guest_memfd(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, +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 =3D DEVICE(owner); - vmstate_register_ram(mr, owner_dev); - + memory_region_register_ram(mr, owner); return true; } =20 -bool memory_region_init_rom(MemoryRegion *mr, - Object *owner, - const char *name, - uint64_t size, +bool memory_region_init_rom(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, 0, errp)) { return false; } mr->readonly =3D true; - /* 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 =3D DEVICE(owner); - vmstate_register_ram(mr, owner_dev); - + memory_region_register_ram(mr, owner); return true; } =20 -bool memory_region_init_rom_device(MemoryRegion *mr, - Object *owner, - const MemoryRegionOps *ops, - void *opaque, - const char *name, - uint64_t size, +bool memory_region_init_rom_device(MemoryRegion *mr, Object *owner, + const MemoryRegionOps *ops, void *opaqu= e, + const char *name, uint64_t size, Error **errp) { - DeviceState *owner_dev; Error *err =3D NULL; =20 assert(ops); @@ -3751,15 +3725,7 @@ bool memory_region_init_rom_device(MemoryRegion *mr, } mr->ram =3D false; mr->rom_device =3D true; - /* 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 =3D DEVICE(owner); - vmstate_register_ram(mr, owner_dev); - + memory_region_register_ram(mr, owner); return true; } =20 --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574526204830.3650955692792; Tue, 3 Mar 2026 13:48:46 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXb8-0003SJ-W3; Tue, 03 Mar 2026 16:48:11 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXb0-0003OL-8G for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:02 -0500 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXay-0000GW-RY for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:01 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 4C73C597391; Tue, 03 Mar 2026 22:47:59 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id F0D1K4HT_qes; Tue, 3 Mar 2026 22:47:57 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 4E96F597393; Tue, 03 Mar 2026 22:47:57 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 7/8] memory: Shorten memory_region_init_ram_device_ptr and memory_region_init_rom_device MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:57 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -3 X-Spam_score: -0.4 X-Spam_bar: / X-Spam_report: (-0.4 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.322, RCVD_IN_VALIDITY_SAFE_BLOCKED=1.141, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574528961139101 Content-Type: text/plain; charset="utf-8" We can reuse memory_region_init_io in these functions. Also shorten some other function prototypes. Signed-off-by: BALATON Zoltan --- system/memory.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/system/memory.c b/system/memory.c index f75ca015a9..5c6514b985 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1568,12 +1568,9 @@ static void memory_region_set_ops(MemoryRegion *mr, mr->terminates =3D true; } =20 -void memory_region_init_io(MemoryRegion *mr, - Object *owner, - const MemoryRegionOps *ops, - void *opaque, - const char *name, - uint64_t size) +void memory_region_init_io(MemoryRegion *mr, Object *owner, + const MemoryRegionOps *ops, void *opaque, + const char *name, uint64_t size) { memory_region_init(mr, owner, name, size); memory_region_set_ops(mr, ops, opaque); @@ -1687,8 +1684,7 @@ void memory_region_init_ram_device_ptr(MemoryRegion *= mr, Object *owner, const char *name, uint64_t size, void *ptr) { - memory_region_init(mr, owner, name, size); - memory_region_set_ops(mr, &ram_device_mem_ops, mr); + memory_region_init_io(mr, owner, &ram_device_mem_ops, mr, name, size); memory_region_setup_ram(mr); /* qemu_ram_alloc_from_ptr cannot fail with ptr !=3D NULL. */ assert(ptr !=3D NULL); @@ -1696,12 +1692,9 @@ void memory_region_init_ram_device_ptr(MemoryRegion = *mr, Object *owner, mr->ram_device =3D true; } =20 -void memory_region_init_alias(MemoryRegion *mr, - Object *owner, - const char *name, - MemoryRegion *orig, - hwaddr offset, - uint64_t size) +void memory_region_init_alias(MemoryRegion *mr, Object *owner, + const char *name, MemoryRegion *orig, + hwaddr offset, uint64_t size) { memory_region_init(mr, owner, name, size); mr->alias =3D orig; @@ -3716,8 +3709,7 @@ bool memory_region_init_rom_device(MemoryRegion *mr, = Object *owner, Error *err =3D NULL; =20 assert(ops); - memory_region_init(mr, owner, name, size); - memory_region_set_ops(mr, ops, opaque); + memory_region_init_io(mr, owner, ops, opaque, name, size); memory_region_setup_ram(mr); mr->ram_block =3D qemu_ram_alloc(size, 0, mr, &err); if (!memory_region_error_propagate(mr, err, errp)) { --=20 2.41.3 From nobody Sat Apr 11 23:02:28 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772574543426237.35723323235436; Tue, 3 Mar 2026 13:49:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vxXbA-0003T3-T4; Tue, 03 Mar 2026 16:48:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXb1-0003PN-Hi for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:08 -0500 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vxXaz-0000Gp-Ju for qemu-devel@nongnu.org; Tue, 03 Mar 2026 16:48:03 -0500 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 58231597394; Tue, 03 Mar 2026 22:48:00 +0100 (CET) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id MgTR8LvEpYBi; Tue, 3 Mar 2026 22:47:58 +0100 (CET) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 59B2259738F; Tue, 03 Mar 2026 22:47:58 +0100 (CET) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <75262efee98d291d856630dfb3bfdff85e297859.1772572714.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v6 8/8] memory: Factor out more common ram region initialization MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org Cc: Peter Xu , Akihiko Odaki , Paolo Bonzini , Mark Cave-Ayland , Gerd Hoffmann , Max Filippov , Peter Maydell , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Date: Tue, 03 Mar 2026 22:47:58 +0100 (CET) Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1772574545414158500 Content-Type: text/plain; charset="utf-8" Introduce internal memory_region_setup_ram_ptr() function to remove duplicated code from different memory_region_init_ram_*ptr functions. Signed-off-by: BALATON Zoltan --- system/memory.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/system/memory.c b/system/memory.c index 5c6514b985..aecd85b45b 100644 --- a/system/memory.c +++ b/system/memory.c @@ -1670,25 +1670,28 @@ bool memory_region_init_ram_from_fd(MemoryRegion *m= r, Object *owner, } #endif =20 -void memory_region_init_ram_ptr(MemoryRegion *mr, Object *owner, - const char *name, uint64_t size, void *ptr) +static void memory_region_setup_ram_ptr(MemoryRegion *mr, uint64_t size, + void *ptr) { - memory_region_init(mr, owner, name, size); memory_region_setup_ram(mr); /* qemu_ram_alloc_from_ptr cannot fail with ptr !=3D NULL. */ assert(ptr !=3D NULL); mr->ram_block =3D qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort); } =20 +void memory_region_init_ram_ptr(MemoryRegion *mr, Object *owner, + const char *name, uint64_t size, void *ptr) +{ + memory_region_init(mr, owner, name, size); + memory_region_setup_ram_ptr(mr, size, ptr); +} + void memory_region_init_ram_device_ptr(MemoryRegion *mr, Object *owner, const char *name, uint64_t size, void *ptr) { memory_region_init_io(mr, owner, &ram_device_mem_ops, mr, name, size); - memory_region_setup_ram(mr); - /* qemu_ram_alloc_from_ptr cannot fail with ptr !=3D NULL. */ - assert(ptr !=3D NULL); - mr->ram_block =3D qemu_ram_alloc_from_ptr(size, ptr, mr, &error_abort); + memory_region_setup_ram_ptr(mr, size, ptr); mr->ram_device =3D true; } =20 --=20 2.41.3