[{"id":3680146,"web_url":"http://patchwork.ozlabs.org/comment/3680146/","msgid":"<CAKmqyKMvPoDHD_A+zLfAAcNad4RpmBP0SuNX5RTFZV33kmnZpQ@mail.gmail.com>","list_archive_url":null,"date":"2026-04-22T00:04:33","subject":"Re: [PATCH v3 02/13] hw/riscv/boot: Describe discontiguous memory in\n boot_info","submitter":{"id":64571,"url":"http://patchwork.ozlabs.org/api/people/64571/","name":"Alistair Francis","email":"alistair23@gmail.com"},"content":"On Tue, Apr 21, 2026 at 3:34 PM Joel Stanley <joel@jms.id.au> wrote:\n>\n> From: Nicholas Piggin <npiggin@gmail.com>\n>\n> Machines that have discontiguous memory may need to adjust where\n> firmware and images are loaded at boot. Provide an interface for\n> machines to describe a discontiguous low/high RAM scheme for this\n> purpose.\n>\n> Signed-off-by: Nicholas Piggin <npiggin@gmail.com>\n> Reviewed-by: Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>\n> Signed-off-by: Joel Stanley <joel@jms.id.au>\n\nReviewed-by: Alistair Francis <alistair.francis@wdc.com>\n\nAlistair\n\n> ---\n>  include/hw/riscv/boot.h |  7 +++++++\n>  hw/riscv/boot.c         | 11 +++++++++++\n>  2 files changed, 18 insertions(+)\n>\n> diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h\n> index f00b3ca12245..115e3222174f 100644\n> --- a/include/hw/riscv/boot.h\n> +++ b/include/hw/riscv/boot.h\n> @@ -28,6 +28,10 @@\n>  #define RISCV64_BIOS_BIN    \"opensbi-riscv64-generic-fw_dynamic.bin\"\n>\n>  typedef struct RISCVBootInfo {\n> +    /* First contiguous RAM region. If size is zero then assume entire RAM */\n> +    hwaddr ram_low_start;\n> +    hwaddr ram_low_size;\n> +\n>      ssize_t kernel_size;\n>      hwaddr image_low_addr;\n>      hwaddr image_high_addr;\n> @@ -43,6 +47,9 @@ bool riscv_is_32bit(RISCVHartArrayState *harts);\n>  char *riscv_plic_hart_config_string(int hart_count);\n>\n>  void riscv_boot_info_init(RISCVBootInfo *info, RISCVHartArrayState *harts);\n> +void riscv_boot_info_init_discontig_mem(RISCVBootInfo *info,\n> +                                        RISCVHartArrayState *harts,\n> +                                        hwaddr start, hwaddr size);\n>  vaddr riscv_calc_kernel_start_addr(RISCVBootInfo *info,\n>                                     hwaddr firmware_end_addr);\n>  hwaddr riscv_find_and_load_firmware(MachineState *machine,\n> diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c\n> index 9086793b7a7b..5c9547429a36 100644\n> --- a/hw/riscv/boot.c\n> +++ b/hw/riscv/boot.c\n> @@ -69,11 +69,22 @@ char *riscv_plic_hart_config_string(int hart_count)\n>\n>  void riscv_boot_info_init(RISCVBootInfo *info, RISCVHartArrayState *harts)\n>  {\n> +    info->ram_low_start = 0;\n> +    info->ram_low_size = 0;\n>      info->kernel_size = 0;\n>      info->initrd_size = 0;\n>      info->is_32bit = riscv_is_32bit(harts);\n>  }\n>\n> +void riscv_boot_info_init_discontig_mem(RISCVBootInfo *info,\n> +                                        RISCVHartArrayState *harts,\n> +                                        hwaddr start, hwaddr size)\n> +{\n> +    riscv_boot_info_init(info, harts);\n> +    info->ram_low_start = start;\n> +    info->ram_low_size = size;\n> +}\n> +\n>  vaddr riscv_calc_kernel_start_addr(RISCVBootInfo *info,\n>                                     hwaddr firmware_end_addr) {\n>      if (info->is_32bit) {\n> --\n> 2.47.3\n>\n>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=W28M92ga;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org\n (client-ip=209.51.188.17; helo=lists1p.gnu.org;\n envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n receiver=patchwork.ozlabs.org)"],"Received":["from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17])\n\t(using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0fd55z1Dz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 10:05:45 +1000 (AEST)","from localhost ([::1] helo=lists1p.gnu.org)\n\tby lists1p.gnu.org with esmtp (Exim 4.90_1)\n\t(envelope-from <qemu-devel-bounces@nongnu.org>)\n\tid 1wFL5T-0002nl-Vc; Tue, 21 Apr 2026 20:05:04 -0400","from eggs.gnu.org ([2001:470:142:3::10])\n by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wFL5S-0002nM-Mn\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 20:05:02 -0400","from mail-ed1-x533.google.com ([2a00:1450:4864:20::533])\n by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)\n (Exim 4.90_1) (envelope-from <alistair23@gmail.com>)\n id 1wFL5R-00047V-2i\n for qemu-devel@nongnu.org; Tue, 21 Apr 2026 20:05:02 -0400","by mail-ed1-x533.google.com with SMTP id\n 4fb4d7f45d1cf-676d8582a13so1330396a12.0\n for <qemu-devel@nongnu.org>; Tue, 21 Apr 2026 17:05:00 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776816300; cv=none;\n d=google.com; s=arc-20240605;\n b=KMdr4xKnRDQ93KGANb4yjZwWJtBa86RU/k+BPklq4zsC6VcLo9KcA3lrkuKUo9xNmG\n sVgqJ/jNgvkP4p7QHT5hrTuNiL0ZEzX9p4hHvU08zVEl1/aS4JyTxG4UciyjQL7lshAO\n 7Xe6lUmXsb66Z2A37adAHgucW/WUQTFuXJn0P26hO4r8F7TswCttwFIHRQxX+wCjTriy\n BgKQXSyG1Qxq1LJ5NtznZQWO6mcnZcp0/I+Gj8ikJvp/tqqbzLsLSy+fTZPW3JU+5MFS\n +6DjWnoRgs6dBDcY3KNPrRGxE9WwP5mlltOQZUbhaCxPkLr+rRBHgkcszoesrUTpoibA\n 9ixQ==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=Hco5VyA1XfLEoQKJ1X+h5zZL1yg79y5fKn5DjcvX3Ks=;\n fh=Jqgq6Ia09t6Vodf6R7BTfp0X7UM9vMN1R3KFAlISu6k=;\n b=dYuKLHvjG2hNJ7WyNsaUXf25dtgqYnWDM131X1RmIwVRy3YDN2En12QAS9XVfsmpQU\n LxwoGiMzK0ehLNx2F83pOcfUZh8vOip/uBOuICpa1pr61hCSfSi2e/DHXJLZGObtA6bV\n nZ+i40L5y1i8c1+wAB0gNsTB4gQhM1dY5rxa2WZGi/+To29CbxSVjMXXfLJLqu1nfkWC\n UF7HGKKTtZ9ib6eyAQZGnoc1RGi7fHCVA7iTwtQ+n5Xk8pw1xYkj6pylJGF12L7znjzM\n XTRbA/xrIdFk3p8OVBQllNfXHQvNaFaIjVxmlHS9wtfQN4b+/Wukr1CHAmiHXzjwxvA2\n H0GA==; darn=nongnu.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1776816300; x=1777421100; darn=nongnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=Hco5VyA1XfLEoQKJ1X+h5zZL1yg79y5fKn5DjcvX3Ks=;\n b=W28M92ga2dCADzbDTUG0LwGO8yoJtXXTzVmoUBAi1ENf+PVuUrpvSNm+cGLh/WS64e\n Kbob929sbfDftOc9uds1/HR7od1JnzYYm3/M/2kJy9yfWJLjvIn/LhVIyR7P8SVO+OLp\n t9X3p/QhjbVhOoOh/59MbbaqeJv5SM5h3Z0U68pvM31BnRoVpp5tYC4ZOEu+AaHUiVC0\n AGdb5Y8S9LEBVFehBQqdNvBarQXVDVqJUfD1CrJZh94c4sXgSLhHoKv08LnhpczPt+Lk\n Ex9hmLobWKVHxV5MlYR99dgQ7A6VoYvSvvGPzjhJGnmGXU86hhqeyX+U1p23gzSI7TIs\n cc6g==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776816300; x=1777421100;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=Hco5VyA1XfLEoQKJ1X+h5zZL1yg79y5fKn5DjcvX3Ks=;\n b=mcRRCKqZM91ErRwG5xvwj3QHMcQzDtsHj3hBU8FgxmvQq9giV56s5QvtvO/h0Ajp5q\n DWLhupP3SHJdaRYbnuBoRPSDAWj1t+UzS5QtS8QysRgsYnooxCkNKCtjdeNuaYP0EZKC\n JVMLwpkHkSTv8nlc0QvPjfQPWvlEhvnldopJNti/B/FWYc9t08kunGo1Zi+l1U4v0Yhb\n MqOGnFVJtafbBSmLZIQlbndz2r6xcNSdkNKRe6ujmB/TPyDY+PYIsqUXBqvmMGAP2d9H\n Y9pdPMietgHs2sSrHJMm39jwZ0rHeLThFebD2ERLV3ilOIqBbzwJSmac4kCaQvukPqG7\n e5aA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9H9Xlq7DyNg4iDVTAF4vDkM0t4vaS1C7nLPRllZikPO8ZatF7ONFfnk40hc5xTzKFJbMwRAY8uPVuC@nongnu.org","X-Gm-Message-State":"AOJu0YycjbKsVqw8Gi/U8kKA+qG8l2LW+uZKWuW1Xv3Lqs++D2cvt3H/\n hqYyXzAzFMnnqfhhBiwFyzfIMIgh6tGIx1yW++GTomOoidsnF32Hy7r7uuxnivouIVPrgYkXhoH\n O9KI76/65lfe99Y4m6LnVDfX/EQ9xJXqQXzEY","X-Gm-Gg":"AeBDievTPXrQKvqabE+i5IGvVuByrXCGa7cmMC/1GopdQfL5pqVAMkIBYifnZZbQJZ0\n lAyXKA7DcoIbKfGiYm98K3ho7gIRTSCMMYddRJSItwG8TdIXr3YrjQ3o9UZQMc+y60xX3saljQw\n MNIODtY4CrMoFjt7UD/vbLwA10W1/g4JpRgFdjFAWsoptpAvdnSM81PI6MUqGe1g9LljCvwGtzA\n DS9IvwuEWhooFgcxA2QebPtd0A3Bv+5hhVZQC9arF/wTzAPrSy7/uBGSplIZ4Z/c8IILZKeg1PL\n HgDhp6jf+G5h5B7DXI+79o8j7C1juhhaRBoXNNeKLFDGRq14","X-Received":"by 2002:a17:907:8707:b0:b9c:69df:4d8e with SMTP id\n a640c23a62f3a-ba41aa160d8mr675196866b.25.1776816299561; Tue, 21 Apr 2026\n 17:04:59 -0700 (PDT)","MIME-Version":"1.0","References":"<20260421053140.752059-1-joel@jms.id.au>\n <20260421053140.752059-3-joel@jms.id.au>","In-Reply-To":"<20260421053140.752059-3-joel@jms.id.au>","From":"Alistair Francis <alistair23@gmail.com>","Date":"Wed, 22 Apr 2026 10:04:33 +1000","X-Gm-Features":"AQROBzBaNA93jVv_UmWzTfVJMeOxE76v2LE3ElNgYNkBRNwbiMhH8QeZJhb7-Fk","Message-ID":"\n <CAKmqyKMvPoDHD_A+zLfAAcNad4RpmBP0SuNX5RTFZV33kmnZpQ@mail.gmail.com>","Subject":"Re: [PATCH v3 02/13] hw/riscv/boot: Describe discontiguous memory in\n boot_info","To":"Joel Stanley <joel@jms.id.au>","Cc":"Alistair Francis <alistair.francis@wdc.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,\n Nicholas Piggin <npiggin@gmail.com>,\n Michael Ellerman <mpe@kernel.org>, Joel Stanley <jms@oss.tenstorrent.com>,\n Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>, qemu-riscv@nongnu.org,\n qemu-devel@nongnu.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2a00:1450:4864:20::533;\n envelope-from=alistair23@gmail.com; helo=mail-ed1-x533.google.com","X-Spam_score_int":"-17","X-Spam_score":"-1.8","X-Spam_bar":"-","X-Spam_report":"(-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,\n DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,\n FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001,\n RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,\n 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 <qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<https://lists.nongnu.org/archive/html/qemu-devel>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n <mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org"}}]