[{"id":3677870,"web_url":"http://patchwork.ozlabs.org/comment/3677870/","msgid":"<CAKmqyKNSHENKy0fRfo3vNE8q1M6qELtxYkNPCdkyumLbTX7jrg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-16T00:07:35","subject":"Re: [PATCH v2 4/4] hw/riscv/boot: Provide a simple halting payload","submitter":{"id":64571,"url":"http://patchwork.ozlabs.org/api/people/64571/","name":"Alistair Francis","email":"alistair23@gmail.com"},"content":"On Wed, Apr 15, 2026 at 4:50 PM Joel Stanley <joel@jms.id.au> wrote:\n>\n> From: Nicholas Piggin <npiggin@gmail.com>\n>\n> OpenSBI hangs before any console output if the domain init code sees the\n> next stage is not in an executable region.\n>\n> If no kernel payload is provided to QEMU, the next stage address is\n> NULL, and the riscv virt machine memory map ends up covering the 0\n> address with the catch all S-mode RWX region and so OpenSBI prints\n> console messages and does not hang until the next stage boot.\n>\n> The soon to be added Tenstorrent Atlantis board address map has RAM\n> starting at 0 and it loads OpenSBI there, so it is M-mode and not\n> accessible by S-mode, tripping the early check and hang.\n\nThat sounds like an OpenSBI bug more than a hardware/QEMU issue.\n\n>\n> Add a helper to set up a simple payload that gets OpenSBI messages\n> to console.\n\nWhere do we load this payload? What happens if the user loads\nsomething there as well, so we clobber their binary?\n\nThis seems like something that should be fixed in OpenSBI instead of\nhacked around in QEMU\n\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> ---\n> v2: Update commit message to clarfiy that Atlantis isn't in the tree yet\n>\n>  include/hw/riscv/boot.h |  2 ++\n>  hw/riscv/boot.c         | 21 +++++++++++++++++++++\n>  2 files changed, 23 insertions(+)\n>\n> diff --git a/include/hw/riscv/boot.h b/include/hw/riscv/boot.h\n> index fb90bf12399e..d1d7258a2179 100644\n> --- a/include/hw/riscv/boot.h\n> +++ b/include/hw/riscv/boot.h\n> @@ -78,6 +78,8 @@ void riscv_setup_rom_reset_vec(MachineState *machine, RISCVHartArrayState *harts\n>                                 hwaddr rom_base, hwaddr rom_size,\n>                                 uint64_t kernel_entry,\n>                                 uint64_t fdt_load_addr);\n> +void riscv_setup_halting_payload(MachineState *machine,\n> +                                 RISCVBootInfo *info, hwaddr addr);\n>  void riscv_rom_copy_firmware_info(MachineState *machine,\n>                                    RISCVHartArrayState *harts,\n>                                    hwaddr rom_base,\n> diff --git a/hw/riscv/boot.c b/hw/riscv/boot.c\n> index 3ea95c175c14..fc8a39a8d913 100644\n> --- a/hw/riscv/boot.c\n> +++ b/hw/riscv/boot.c\n> @@ -518,6 +518,27 @@ void riscv_setup_rom_reset_vec(MachineState *machine, RISCVHartArrayState *harts\n>                                   kernel_entry);\n>  }\n>\n> +/* Simple payload so OpenSBI does not hang early with no output */\n> +void riscv_setup_halting_payload(MachineState *machine,\n> +                                 RISCVBootInfo *info, hwaddr addr)\n\nThis function is currently unused as well\n\nAlistair\n\n> +{\n> +    int i;\n> +    uint32_t payload_vec[] = {\n> +        0x10500073,                     /* 1: wfi           */\n> +        0xffdff06f,                     /* j       1b       */\n> +    };\n> +    /* copy in the payload vector in little_endian byte order */\n> +    for (i = 0; i < ARRAY_SIZE(payload_vec); i++) {\n> +        payload_vec[i] = cpu_to_le32(payload_vec[i]);\n> +    }\n> +    rom_add_blob_fixed_as(\"mrom.payload\", payload_vec, sizeof(payload_vec),\n> +                          addr, &address_space_memory);\n> +\n> +    info->kernel_size = sizeof(payload_vec);\n> +    info->image_low_addr = addr;\n> +    info->image_high_addr = info->image_low_addr + info->kernel_size;\n> +}\n> +\n>  void riscv_setup_direct_kernel(hwaddr kernel_addr, hwaddr fdt_addr)\n>  {\n>      CPUState *cs;\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=jJtBys8S;\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 4fwyz16r4tz1yHP\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 16 Apr 2026 10:08:28 +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 1wDAHA-0000jj-Et; Wed, 15 Apr 2026 20:08:08 -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 1wDAH9-0000jD-5d\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 20:08:07 -0400","from mail-yx1-xb133.google.com ([2607:f8b0:4864:20::b133])\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 1wDAH7-0007ww-J0\n for qemu-devel@nongnu.org; Wed, 15 Apr 2026 20:08:06 -0400","by mail-yx1-xb133.google.com with SMTP id\n 956f58d0204a3-64eaf8aa893so6306104d50.3\n for <qemu-devel@nongnu.org>; Wed, 15 Apr 2026 17:08:05 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; t=1776298084; cv=none;\n d=google.com; s=arc-20240605;\n b=WitQ0PzthpPf41t+30nR9bosDile2d1WopQuAfr+EcDs+zEzVx5hOXHt8/VSL0P8VU\n x95zFWhUa/rDcOJyZb60GsAVMCCYF8SQOiuFFI0yq0AXaoOQo3N2q7Lue9dXet2wAgtS\n xxUHWpDmMwl9/WlPhvWipDNhTe+R/gJdamNP4yFBldLBlIyVh3IA+hMFn2JdOu/IhFlP\n BSLKEsSfibW9SdD6nOqFqtfqgi1617G1ixywlXIYWK5XVPL0GStag+Hmshx1Z8fdl0GH\n x0iIUjhC2f2FxuHlPLhzZ8O67oOw189k7bjtOn3IvFF18CAaH1Df10QdWnGlfFR+H9gf\n pptQ==","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=ALXJDhGoGm2ecKUcLFHHfFLWkNA5qeY5vpMn4UEbSMw=;\n fh=qfLCg9wuugiodPfFFzOc0aeevq00y/QWyEwgPIS5ii0=;\n b=hNTc+evtr+dp7rPDF9Q79KLysumpUlj5H+wL/zEyZWFkBZLfhNtaWV6Yt275QepJ74\n mXiPV6Jhwfw02VfvxK4oLZ2WkZWGeXHtHBCZ4LBH4zXVcYbzWJv5xrPhkwbKmEFcd2K7\n sq0KSx2pT2nDxQPTRrv96S31DAnVkRiCzG1YJvP642CKxuT9DXiZZvOpCqB/Lg9WpnNv\n EVogyEmLZQCFTUvoM83WzleuxN+5uyJJbCRNJDZFHjSpoJEN7RQI9OWrdlfw0QsdD/v5\n qCbZzMrcrBrAm0gmHOPOaQOGWWb+0BPnCZf+Zg0ljHeMWO0IDSqBMUbFs/OPZ37OsexE\n e5wA==; 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=1776298084; x=1776902884; 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=ALXJDhGoGm2ecKUcLFHHfFLWkNA5qeY5vpMn4UEbSMw=;\n b=jJtBys8Sr050v4UdGi2jpeQCRiUjadzKgUQekX4sVy0xZjUe+DYc3olASSWAtZlN7b\n m6lLEAWtCPreu18KDD1Y+vnqyd4Vmc8g5hEyWv5W/LK0NkMo5H2LH5mdoSiIauh8lYvI\n jFCHHrHBxz2SYbEKP93hEkcJY0i2EjXscWLwnXRV31UnS/JtmoF3/9tinm7n62Yh8+yo\n nkieIhDxm5873aJI4QHS6WQsES9tVO6uTyHhE6gJRTswECixl+nqDsr86RWuY2+Uol/w\n 3BlohNarMd9aoweHgP8XTkBEbV/G6oGZvNv+S+Kb3U91GsWD+4NjIlyHgBsScmTUhlMa\n QrTQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1776298084; x=1776902884;\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=ALXJDhGoGm2ecKUcLFHHfFLWkNA5qeY5vpMn4UEbSMw=;\n b=btGBJTbT3M+SqaQ1J9yJdDVehV6apYtUoWylpN74IvdtmW/0olaNRZO2nBm0NLnmAy\n 5nAbqA7ujxOEYCal677PbUHn1v98E+DyrwLKDTvkMcPOYrdYH89jeOLUTaWfXLWVQAEc\n 8t00Ft0AAwYQbEO/WIgZw3Ssdo6Sn8Vhfw1I7DePrehjOGgXMsUYeuRhC8076LpuLLLG\n oy7/vU1/c94BHLV9pB+dpvBl3qM8I4+XYdbFDnaF2pWtqOGhGrYvqyUvlEcJpCkehbiX\n Xi/NPvk/XOeJCEZMIpym036eM12+0DrgxVUfcc1xv9sVC4ko4bSmdZdXpqO+QSTJfG8x\n 9weQ==","X-Forwarded-Encrypted":"i=1;\n AFNElJ8rfFuo2HTNxLG3Y9eg536il5emleYZ3DQQ4EnE4eYummDSZIq0MlxyKrRzYqppkSHTq5GQlsVdAIQh@nongnu.org","X-Gm-Message-State":"AOJu0YwGyyhObnTSGCTWYn+NltWMAc9IKaR2jF4HUFiZ6fhYwaERAY7R\n NF5/h2xIrT0igME6k3VviNKuJmviG8kvhABj9BxXN+gF2jWH0Majm8AqTVSPvlyKfjl+71kVnnb\n lcyTGsJYi6pdshV9me09fuTL+oqIpvq4=","X-Gm-Gg":"AeBDievMYbMEkBGXUTiQn5ibmw28LFmwnX3/fSX4iwX8DwHujfkQM3yFFKVPHCOJL32\n bZMp91oux65Ay7OUYpf4jooWeaLadXyM1zP6uXMPws4pIr1n8trp6NglNDZ4kUdRrCIDVh+nnQB\n aGu2N62SloFHK9J/4AWEe25nTdtI+p+JYrdfPge1kV86xzGxdmgWx/bGWfgmKPSObMgWhwut5xF\n cMeDPGKlsLYUIViFVVyQUd2tFvOto0u/tHMkHifpPOmd/Zqrwb+S5TnBXAhA5wA8sXmn3NCRK0X\n yLH23l/zKPQgyTYyLadOY3jtcYHmafZrVwQMBA==","X-Received":"by 2002:a53:db50:0:b0:64e:8748:38a1 with SMTP id\n 956f58d0204a3-65198c0e535mr16752764d50.66.1776298084233; Wed, 15 Apr 2026\n 17:08:04 -0700 (PDT)","MIME-Version":"1.0","References":"<20260415064838.652297-1-joel@jms.id.au>\n <20260415064838.652297-5-joel@jms.id.au>","In-Reply-To":"<20260415064838.652297-5-joel@jms.id.au>","From":"Alistair Francis <alistair23@gmail.com>","Date":"Thu, 16 Apr 2026 10:07:35 +1000","X-Gm-Features":"AQROBzCW8dBcAsMfWD7bEGxxLt9aaTLgdiQ_ksRAhI52m84iojiEsGUv3NCoBc0","Message-ID":"\n <CAKmqyKNSHENKy0fRfo3vNE8q1M6qELtxYkNPCdkyumLbTX7jrg@mail.gmail.com>","Subject":"Re: [PATCH v2 4/4] hw/riscv/boot: Provide a simple halting payload","To":"Joel Stanley <joel@jms.id.au>","Cc":"Alistair Francis <alistair.francis@wdc.com>,\n Daniel Henrique Barboza <daniel.barboza@oss.qualcomm.com>,\n qemu-devel@nongnu.org,\n Nicholas Piggin <npiggin@gmail.com>, Weiwei Li <liwei1518@gmail.com>,\n Michael Ellerman <mpe@oss.tenstorrent.com>,\n Joel Stanley <jms@oss.tenstorrent.com>,\n Nick Piggin <npiggin@oss.tenstorrent.com>,\n Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>, qemu-riscv@nongnu.org","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","Received-SPF":"pass client-ip=2607:f8b0:4864:20::b133;\n envelope-from=alistair23@gmail.com; helo=mail-yx1-xb133.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=unavailable 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"}}]