From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 5FE98C4451B for ; Sat, 18 Jul 2026 22:05:21 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlD9q-0000tJ-GI; Sat, 18 Jul 2026 18:05:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9m-0000ir-Jn; Sat, 18 Jul 2026 18:05:14 -0400 Received: from pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com ([44.246.68.102]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlD9k-00061C-1C; Sat, 18 Jul 2026 18:05:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazoncorp2; t=1784412312; x=1815948312; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=42fWECEj/By4pP4aqwhbfUtd2TyT+YqbexkZw1F0AO4=; b=Ze6WXTKftG/U+yqhb7KIWkAGEunupuSX4NdY+a+6/NI0sqIqqGCi1guH sKoUenNjRUuRuVjCKVNTC/J6nOdR8myZEdo1vNO3xlQ24FZ83W42HIb2X 2EYCYmsCykSQGgnB53UBlUSQAPvw308UgrWD4WabKKMO3CVyoZrbmHsaz WAP/Eg9ADwtOaJMalYSXpo6N178eebp6+hkw66kvZ2VmQ6dshAu1D0GG3 GuwhxGBTVnkgbI3lw0nlW0KUo5JgNQyMqdN4t7wzjJVUH2icJbBRZYVrg udAGlz7lEa1OOQJyi6DtYjdqKgXZkaXIwv6mcERlFSAHMACf39me5KxhJ w==; X-CSE-ConnectionGUID: m/773KBxTMaDCKT0N5HJaA== X-CSE-MsgGUID: 5uBm1Q6kSISHTYh56CtHIg== X-IronPort-AV: E=Sophos;i="6.25,171,1779148800"; d="scan'208";a="23942369" Received: from ip-10-5-0-115.us-west-2.compute.internal (HELO smtpout.naws.us-west-2.prod.farcaster.email.amazon.dev) ([10.5.0.115]) by internal-pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Jul 2026 22:05:07 +0000 Received: from EX19MTAUWC002.ant.amazon.com [205.251.233.51:13962] by smtpin.naws.us-west-2.prod.farcaster.email.amazon.dev [10.0.41.246:2525] with esmtp (Farcaster) id 7a81a946-177b-4b3c-a93f-e0edaad297f6; Sat, 18 Jul 2026 22:05:07 +0000 (UTC) X-Farcaster-Flow-ID: 7a81a946-177b-4b3c-a93f-e0edaad297f6 Received: from EX19D001UWA001.ant.amazon.com (10.13.138.214) by EX19MTAUWC002.ant.amazon.com (10.250.64.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:05:07 +0000 Received: from ip-10-253-83-51.amazon.com (172.19.99.218) by EX19D001UWA001.ant.amazon.com (10.13.138.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.2562.43; Sat, 18 Jul 2026 22:04:57 +0000 From: Alexander Graf To: CC: , , , , Song Gao <17746591750@163.com>, Aditya Gupta , Alexey Kardashevskiy , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Farhan Ali , Alistair Francis , "Alistair Francis" , Antony Pavlov , Markus Armbruster , Artyom Tarasenko , BALATON Zoltan , Felipe Balbi , =?UTF-8?q?Daniel=20P=20=2E=20Berrang=C3=A9?= , Christian Borntraeger , Brian Cain , Hendrik Brueckner , Chao Liu , "Huacai Chen" , =?UTF-8?q?Cl=C3=A9ment=20Chigot?= , =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= , Helge Deller , Dorjoy Chowdhury , "Edgar E . Iglesias" , Alexandre Iooss , Eric Farman , Fabiano Rosas , Francisco Iglesias , "Gaurav Sharma" , Gautam Gala , "Harsh Prateek Bora" , =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Jan Kiszka , Max Filippov , Joel Stanley , Jared Rossi , Tyrone Ting , Frederic Konrad , Laurent Vivier , "Manos Pitsidianakis" , Bibo Mao , Mark Cave-Ayland , Glenn Miles , Matthew Rosato , Michael Rolnik , "Michael S . Tsirkin" , Niek Linnenbank , Nicholas Piggin , Palmer Dabbelt , Halil Pasic , Paolo Bonzini , Peter Maydell , Peter Xu , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , "Pierrick Bouvier" , Richard Henderson , Sai Pavan Boddu , Samuel Tardieu , Bernhard Beschow , Stafford Horne , Sergio Lopez , "Subbaraya Sundeep" , Thomas Huth , "Ran Wang" , Hao Wu Subject: [RFC PATCH v2 101/137] hw/xtensa: Give memory regions an explicit owner Date: Sat, 18 Jul 2026 21:36:16 +0000 Message-ID: <20260718213652.37673-102-graf@amazon.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260718213652.37673-1-graf@amazon.com> References: <20260711223707.42139-1-graf@amazon.com> <20260718213652.37673-1-graf@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.19.99.218] X-ClientProxiedBy: EX19D033UWC003.ant.amazon.com (10.13.139.217) To EX19D001UWA001.ant.amazon.com (10.13.138.214) Received-SPF: pass client-ip=44.246.68.102; envelope-from=prvs=65292d44c=graf@amazon.de; helo=pdx-out-003.esa.us-west-2.outbound.mail-perimeter.amazon.com X-Spam_score_int: -23 X-Spam_score: -2.4 X-Spam_bar: -- X-Spam_report: (-2.4 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, T_SPF_PERMERROR=0.01, UNPARSEABLE_RELAY=0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org Sender: qemu-arm-bounces+qemu-arm=archiver.kernel.org@nongnu.org Convert memory_region_init*() calls that pass NULL owner to pass the enclosing machine or device instead. Thread Object *owner through xtensa_create_memory_regions(), xtensa_mx_pic_register_cpu() and the static xtfpga_fpga_init() helper. All callers are inside board init functions. No functional change intended. RAMBlock idstrs are unchanged: the owners added here are Machine or SysBus devices, and memory_region_register_ram() maps both to dev=NULL for qemu_ram_set_idstr(). AI-used-for: code (refactoring) Signed-off-by: Alexander Graf --- hw/xtensa/mx_pic.c | 4 ++-- hw/xtensa/sim.c | 15 ++++++++------- hw/xtensa/xtensa_memory.c | 5 +++-- hw/xtensa/xtensa_memory.h | 3 ++- hw/xtensa/xtfpga.c | 30 ++++++++++++++++-------------- include/hw/xtensa/mx_pic.h | 2 +- 6 files changed, 32 insertions(+), 27 deletions(-) diff --git a/hw/xtensa/mx_pic.c b/hw/xtensa/mx_pic.c index 8ded3bc79b..f349fb125c 100644 --- a/hw/xtensa/mx_pic.c +++ b/hw/xtensa/mx_pic.c @@ -299,7 +299,7 @@ static const MemoryRegionOps xtensa_mx_pic_ops = { }, }; -MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *mx, +MemoryRegion *xtensa_mx_pic_register_cpu(Object *owner, XtensaMxPic *mx, qemu_irq *irq, qemu_irq runstall) { @@ -309,7 +309,7 @@ MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *mx, mx_cpu->irq = irq; mx_cpu->runstall = runstall; - memory_region_init_io(&mx_cpu->reg, NULL, &xtensa_mx_pic_ops, mx_cpu, + memory_region_init_io(&mx_cpu->reg, owner, &xtensa_mx_pic_ops, mx_cpu, "mx_pic", 0x280); ++mx->n_cpu; diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c index ad1439a0b4..e3cd69ceca 100644 --- a/hw/xtensa/sim.c +++ b/hw/xtensa/sim.c @@ -60,10 +60,11 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) XtensaCPU *cpu = NULL; CPUXtensaState *env = NULL; ram_addr_t ram_size = machine->ram_size; + Object *mo = OBJECT(machine); int n; for (n = 0; n < machine->smp.cpus; n++) { - cpu = XTENSA_CPU(cpu_create(OBJECT(machine), "cpu[*]", machine->cpu_type)); + cpu = XTENSA_CPU(cpu_create(mo, "cpu[*]", machine->cpu_type)); env = &cpu->env; env->sregs[PRID] = n; @@ -78,17 +79,17 @@ XtensaCPU *xtensa_sim_common_init(MachineState *machine) XtensaMemory sysram = env->config->sysram; sysram.location[0].size = ram_size; - xtensa_create_memory_regions(&env->config->instrom, "xtensa.instrom", + xtensa_create_memory_regions(mo, &env->config->instrom, "xtensa.instrom", get_system_memory()); - xtensa_create_memory_regions(&env->config->instram, "xtensa.instram", + xtensa_create_memory_regions(mo, &env->config->instram, "xtensa.instram", get_system_memory()); - xtensa_create_memory_regions(&env->config->datarom, "xtensa.datarom", + xtensa_create_memory_regions(mo, &env->config->datarom, "xtensa.datarom", get_system_memory()); - xtensa_create_memory_regions(&env->config->dataram, "xtensa.dataram", + xtensa_create_memory_regions(mo, &env->config->dataram, "xtensa.dataram", get_system_memory()); - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa.sysrom", get_system_memory()); - xtensa_create_memory_regions(&sysram, "xtensa.sysram", + xtensa_create_memory_regions(mo, &sysram, "xtensa.sysram", get_system_memory()); } if (serial_hd(0)) { diff --git a/hw/xtensa/xtensa_memory.c b/hw/xtensa/xtensa_memory.c index 13a6077d86..4477eea0ad 100644 --- a/hw/xtensa/xtensa_memory.c +++ b/hw/xtensa/xtensa_memory.c @@ -31,7 +31,8 @@ #include "qemu/error-report.h" #include "xtensa_memory.h" -void xtensa_create_memory_regions(const XtensaMemory *memory, +void xtensa_create_memory_regions(Object *owner, + const XtensaMemory *memory, const char *name, MemoryRegion *super) { @@ -43,7 +44,7 @@ void xtensa_create_memory_regions(const XtensaMemory *memory, g_string_printf(num_name, "%s%u", name, i); m = g_new(MemoryRegion, 1); - memory_region_init_ram(m, NULL, num_name->str, + memory_region_init_ram(m, owner, num_name->str, memory->location[i].size, &error_fatal); memory_region_add_subregion(super, memory->location[i].addr, m); } diff --git a/hw/xtensa/xtensa_memory.h b/hw/xtensa/xtensa_memory.h index c86ad06685..b8b2d4b8b4 100644 --- a/hw/xtensa/xtensa_memory.h +++ b/hw/xtensa/xtensa_memory.h @@ -30,7 +30,8 @@ #include "target/xtensa/cpu.h" -void xtensa_create_memory_regions(const XtensaMemory *memory, +void xtensa_create_memory_regions(Object *owner, + const XtensaMemory *memory, const char *name, MemoryRegion *super); diff --git a/hw/xtensa/xtfpga.c b/hw/xtensa/xtfpga.c index 1c48283f5d..f0c21180a2 100644 --- a/hw/xtensa/xtfpga.c +++ b/hw/xtensa/xtfpga.c @@ -125,12 +125,13 @@ static const MemoryRegionOps xtfpga_fpga_ops = { .endianness = DEVICE_NATIVE_ENDIAN, }; -static XtfpgaFpgaState *xtfpga_fpga_init(MemoryRegion *address_space, +static XtfpgaFpgaState *xtfpga_fpga_init(Object *owner, + MemoryRegion *address_space, hwaddr base, uint32_t freq) { XtfpgaFpgaState *s = g_new(XtfpgaFpgaState, 1); - memory_region_init_io(&s->iomem, NULL, &xtfpga_fpga_ops, s, + memory_region_init_io(&s->iomem, owner, &xtfpga_fpga_ops, s, "xtfpga.fpga", 0x10000); memory_region_add_subregion(address_space, base, &s->iomem); s->freq = freq; @@ -243,6 +244,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) uint32_t freq = 10000000; int n; unsigned int smp_cpus = machine->smp.cpus; + Object *mo = OBJECT(machine); if (smp_cpus > 1) { mx_pic = xtensa_mx_pic_init(31); @@ -262,7 +264,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) if (mx_pic) { MemoryRegion *mx_eri; - mx_eri = xtensa_mx_pic_register_cpu(mx_pic, + mx_eri = xtensa_mx_pic_register_cpu(OBJECT(machine), mx_pic, xtensa_get_extints(cenv), xtensa_get_runstall(cenv)); memory_region_add_subregion(xtensa_get_er_region(cenv), @@ -286,30 +288,30 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) XtensaMemory sysram = env->config->sysram; sysram.location[0].size = machine->ram_size; - xtensa_create_memory_regions(&env->config->instrom, "xtensa.instrom", + xtensa_create_memory_regions(mo, &env->config->instrom, "xtensa.instrom", system_memory); - xtensa_create_memory_regions(&env->config->instram, "xtensa.instram", + xtensa_create_memory_regions(mo, &env->config->instram, "xtensa.instram", system_memory); - xtensa_create_memory_regions(&env->config->datarom, "xtensa.datarom", + xtensa_create_memory_regions(mo, &env->config->datarom, "xtensa.datarom", system_memory); - xtensa_create_memory_regions(&env->config->dataram, "xtensa.dataram", + xtensa_create_memory_regions(mo, &env->config->dataram, "xtensa.dataram", system_memory); - xtensa_create_memory_regions(&sysram, "xtensa.sysram", + xtensa_create_memory_regions(mo, &sysram, "xtensa.sysram", system_memory); } system_io = g_malloc(sizeof(*system_io)); - memory_region_init_io(system_io, NULL, &xtfpga_io_ops, NULL, "xtfpga.io", + memory_region_init_io(system_io, OBJECT(machine), &xtfpga_io_ops, NULL, "xtfpga.io", system_io_size); memory_region_add_subregion(system_memory, board->io[0], system_io); if (board->io[1]) { MemoryRegion *io = g_malloc(sizeof(*io)); - memory_region_init_alias(io, NULL, "xtfpga.io.cached", + memory_region_init_alias(io, OBJECT(machine), "xtfpga.io.cached", system_io, 0, system_io_size); memory_region_add_subregion(system_memory, board->io[1], io); } - xtfpga_fpga_init(system_io, 0x0d020000, freq); + xtfpga_fpga_init(OBJECT(machine), system_io, 0x0d020000, freq); xtfpga_net_init(system_io, 0x0d030000, 0x0d030400, 0x0d800000, extints[1]); serial_mm_init(OBJECT(machine), system_io, 0x0d050020, 2, extints[0], @@ -341,7 +343,7 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) lowmem_end += env->config->sysram.location[0].addr; cur_lowmem += env->config->sysram.location[0].addr; - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa.sysrom", system_memory); if (kernel_cmdline) { @@ -465,13 +467,13 @@ static void xtfpga_init(const XtfpgaBoardDesc *board, MachineState *machine) size = board->flash->size - board->flash->boot_base; } - memory_region_init_alias(flash_io, NULL, "xtfpga.flash", + memory_region_init_alias(flash_io, OBJECT(machine), "xtfpga.flash", flash_mr, board->flash->boot_base, size); memory_region_add_subregion(system_memory, env->config->sysrom.location[0].addr, flash_io); } else { - xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom", + xtensa_create_memory_regions(mo, &env->config->sysrom, "xtensa.sysrom", system_memory); } } diff --git a/include/hw/xtensa/mx_pic.h b/include/hw/xtensa/mx_pic.h index cd316d86eb..01d5ea884e 100644 --- a/include/hw/xtensa/mx_pic.h +++ b/include/hw/xtensa/mx_pic.h @@ -35,7 +35,7 @@ typedef struct XtensaMxPic XtensaMxPic; XtensaMxPic *xtensa_mx_pic_init(unsigned n_extint); void xtensa_mx_pic_reset(void *opaque); -MemoryRegion *xtensa_mx_pic_register_cpu(XtensaMxPic *mx, +MemoryRegion *xtensa_mx_pic_register_cpu(Object *owner, XtensaMxPic *mx, qemu_irq *irq, qemu_irq runstall); qemu_irq *xtensa_mx_pic_get_extints(XtensaMxPic *mx); -- 2.47.1