{"id":2221242,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2221242/?format=json","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.0/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20260408220928.3328551-6-daniel@thingy.jp>","date":"2026-04-08T22:09:28","name":"[v3,5/5] board: qemu: m68k: Create virtio mmio instances","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"de6f8edae8fc8960327e1f77df573764395cde54","submitter":{"id":85408,"url":"http://patchwork.ozlabs.org/api/1.0/people/85408/?format=json","name":"Daniel Palmer","email":"daniel@thingy.jp"},"delegate":{"id":14103,"url":"http://patchwork.ozlabs.org/api/1.0/users/14103/?format=json","username":"spectrum","first_name":"Angelo","last_name":"Dureghello","email":"sysamfw@gmail.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260408220928.3328551-6-daniel@thingy.jp/mbox/","series":[{"id":499218,"url":"http://patchwork.ozlabs.org/api/1.0/series/499218/?format=json","date":"2026-04-08T22:09:23","name":"Add virtio-mmio support to m68k virt machine","version":3,"mbox":"http://patchwork.ozlabs.org/series/499218/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2221242/checks/","tags":{},"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=thingy.jp header.i=@thingy.jp header.a=rsa-sha256\n header.s=google header.b=OD4OxNP1;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=thingy.jp","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=thingy.jp header.i=@thingy.jp header.b=\"OD4OxNP1\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=none (p=none dis=none) header.from=thingy.jp","phobos.denx.de; spf=pass smtp.mailfrom=daniel@0x0f.com"],"Received":["from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4frchM1H43z1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 09 Apr 2026 08:10:43 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 5C3678418C;\n\tThu,  9 Apr 2026 00:10:09 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id EB0B78407E; Thu,  9 Apr 2026 00:10:07 +0200 (CEST)","from mail-pf1-x431.google.com (mail-pf1-x431.google.com\n [IPv6:2607:f8b0:4864:20::431])\n (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 813C384189\n for <u-boot@lists.denx.de>; Thu,  9 Apr 2026 00:10:05 +0200 (CEST)","by mail-pf1-x431.google.com with SMTP id\n d2e1a72fcca58-82748257f5fso157300b3a.1\n for <u-boot@lists.denx.de>; Wed, 08 Apr 2026 15:10:05 -0700 (PDT)","from kinako ([2400:2200:7f0:5ee8:dac6:2cde:760c:93f])\n by smtp.googlemail.com with ESMTPSA id\n d2e1a72fcca58-82cf9b60199sm19877723b3a.25.2026.04.08.15.10.01\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 08 Apr 2026 15:10:03 -0700 (PDT)"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-1.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,\n RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=no\n autolearn_force=no version=3.4.2","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=thingy.jp; s=google; t=1775686204; x=1776291004; darn=lists.denx.de;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:from:to:cc:subject:date\n :message-id:reply-to;\n bh=39x2J+ebsoD5FR0CWyPswTrMDeyjPp4g/YXM73sFfFE=;\n b=OD4OxNP1Ezp1/bfFGHN8QVbPHHXmPmq8Sf6Jyi/lcD0C3AAcX92NmymVpUlsjQH4th\n ENC61Pcyr+PQAf1S3FzKdBjKmK/NNVysx/7OciYws1k+Zcorh+WHvIcLkbcC0bJ9oG1A\n 648sPxjxTfTWN2x7NeaRFtH414e9wGpxBhlqg=","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775686204; x=1776291004;\n h=content-transfer-encoding:mime-version:references:in-reply-to\n :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=39x2J+ebsoD5FR0CWyPswTrMDeyjPp4g/YXM73sFfFE=;\n b=ceD/G/R7yh704OFtzOWe9njS6s/tV2R1TqLZksN98n47DKhqtbJt1cW+so+AIQ5dkT\n RGadWM9glsNZv1uVXl/ELcEeOLL0Q9UlCgY199U1CT1xZ686Q9olrmZs2HBITwIIb/zX\n sPyin+ugrUilOwgqur8lJDFJogeJZXT4oHe81Ds7Aent0ehO2Sc0SX8GJ7ZS0ZjsCsY1\n 0kj8zYeqWiOVNPV2qe8k819U//V03Zgn4YjvWvySq/1Uydf9ywkUdlYAsU8ykOCPs0RO\n hysa9+FArOx/6O8rcjxFLZnnafpbild9Z8LeTyKUIJgyyTUJ9b+kDHJ8dSqy712C7UmW\n +UVw==","X-Gm-Message-State":"AOJu0Yyfj7IE9SxxDAv6UbBe1nDN7GFt6lulgeiIYyRgbfyVxn58uE8U\n 8CDjRQPOZag/l2nTzZ96lg4ZtO5vHdVkKfvxYWPtnxjRceXoWTVElipBJvDGr798EZU=","X-Gm-Gg":"AeBDievWN/SimnL5M+syK7iWzf6RDeBEe0FBnpvpAQ0mz0KrWsUBv2upNFX2y6nBhrX\n AibsaS2RZxZqKhf6+5D90+IbwfHvYknALfPMXSPibt/DRf0hhjbE0Q7HLA3JkxJRdgJ6bN6sB//\n Gq216lIepofnfVV+rZ4kWS5kn8ARVZSD0ZaoTDNVcQ3AbRejx6virju6KX4qe8BS2j2zVR90JaW\n SBQMFJ6grcpKj6aiEjowfCvC5dlB5M3/omGvQU9avdiGl7eb4vlZ7JBFbQarLI2cQD+cnB0+euK\n vQa4qF1aO/CcNZ4R1+mLKCIF9HIkoE3CWFpZKOfd9RGBl+/b9euXmHqc59mE1lcH0S2wfrT2U52\n BNHMIiX9LOCx3w3aG8SBWG/DLtoGUVYZCJIuyeRgGIrh4LnaKabCsVqAGQgXL5gpI8QSBAdDsrC\n 5+/5qLQrzS/+acYtpb6nD66NU=","X-Received":"by 2002:a05:6a00:4c95:b0:7e8:3fcb:9b06 with SMTP id\n d2e1a72fcca58-82dd8b5eb79mr931375b3a.28.1775686203856;\n Wed, 08 Apr 2026 15:10:03 -0700 (PDT)","From":"Daniel Palmer <daniel@thingy.jp>","To":"visitorckw@gmail.com,\n\tangelo@kernel-space.org,\n\tbmeng.cn@gmail.com","Cc":"u-boot@lists.denx.de,\n\tDaniel Palmer <daniel@thingy.jp>","Subject":"[PATCH v3 5/5] board: qemu: m68k: Create virtio mmio instances","Date":"Thu,  9 Apr 2026 07:09:28 +0900","Message-ID":"<20260408220928.3328551-6-daniel@thingy.jp>","X-Mailer":"git-send-email 2.51.0","In-Reply-To":"<20260408220928.3328551-1-daniel@thingy.jp>","References":"<20260408220928.3328551-1-daniel@thingy.jp>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"So that you can use virtio network, block etc create the virtio mmio\ninstances. There are 128 of these even if they are not all used, a\nsingle mmio base value is passed via bootinfo.\n\nSigned-off-by: Daniel Palmer <daniel@thingy.jp>\n---\n arch/m68k/Kconfig                     | 14 ++++----\n board/emulation/qemu-m68k/qemu-m68k.c | 47 +++++++++++++++++++++++++++\n 2 files changed, 55 insertions(+), 6 deletions(-)","diff":"diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig\nindex 6ce8f577e3a1..20a112880c87 100644\n--- a/arch/m68k/Kconfig\n+++ b/arch/m68k/Kconfig\n@@ -195,12 +195,14 @@ config TARGET_STMARK2\n         select M54418\n \n config TARGET_QEMU_M68K\n-    bool \"Support QEMU m68k virt\"\n-    select M68040\n-    imply CMD_DM\n-    help\n-      This target supports the QEMU m68k virtual machine (-M virt).\n-      It simulates a Motorola 68040 CPU with Goldfish peripherals.\n+\tbool \"Support QEMU m68k virt\"\n+\tselect M68040\n+\tselect BOARD_EARLY_INIT_R\n+\tselect VIRTIO_MMIO\n+\timply CMD_DM\n+\thelp\n+\t  This target supports the QEMU m68k virtual machine (-M virt).\n+\t  It simulates a Motorola 68040 CPU with Goldfish peripherals.\n \n endchoice\n \ndiff --git a/board/emulation/qemu-m68k/qemu-m68k.c b/board/emulation/qemu-m68k/qemu-m68k.c\nindex d3527aee1128..3617c61b5c1f 100644\n--- a/board/emulation/qemu-m68k/qemu-m68k.c\n+++ b/board/emulation/qemu-m68k/qemu-m68k.c\n@@ -14,9 +14,14 @@\n #include <asm/bootinfo.h>\n #include <asm/global_data.h>\n #include <asm/io.h>\n+#include <dm.h>\n+#include <dm/device-internal.h>\n+#include <dm/lists.h>\n #include <dm/platdata.h>\n+#include <dm/root.h>\n #include <linux/errno.h>\n #include <linux/sizes.h>\n+#include <virtio_mmio.h>\n \n DECLARE_GLOBAL_DATA_PTR;\n \n@@ -25,6 +30,38 @@ static struct goldfish_rtc_plat rtc_plat;\n static struct goldfish_timer_plat timer_plat;\n static struct qemu_virt_ctrl_plat reset_plat;\n \n+#define VIRTIO_MMIO_NUM\t128\n+#define VIRTIO_MMIO_SZ\t0x200\n+\n+static struct virtio_mmio_plat virtio_mmio_plat[VIRTIO_MMIO_NUM];\n+static char virtio_mmio_names[VIRTIO_MMIO_NUM][11];\n+static phys_addr_t virtio_mmio_base;\n+\n+static inline int create_virtio_mmios(void)\n+{\n+\tstruct driver *drv;\n+\tint i, ret;\n+\n+\tif (!virtio_mmio_base)\n+\t\treturn -ENODEV;\n+\n+\tdrv = lists_driver_lookup_name(\"virtio-mmio\");\n+\tif (!drv)\n+\t\treturn -ENOENT;\n+\n+\tfor (i = 0; i < VIRTIO_MMIO_NUM; i++) {\n+\t\tvirtio_mmio_plat[i].base = virtio_mmio_base + (VIRTIO_MMIO_SZ * i);\n+\t\tsprintf(virtio_mmio_names[i], \"virtio-%d\", i);\n+\n+\t\tret = device_bind(dm_root(), drv, virtio_mmio_names[i],\n+\t\t\t\t  &virtio_mmio_plat[i], ofnode_null(), NULL);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n /*\n  * Theoretical limit derivation:\n  * Max Bootinfo Size (Standard Page) = 4096 bytes\n@@ -65,6 +102,9 @@ static void parse_bootinfo(void)\n \t\tcase BI_VIRT_CTRL_BASE:\n \t\t\treset_plat.reg = base;\n \t\t\tbreak;\n+\t\tcase BI_VIRT_VIRTIO_BASE:\n+\t\t\tvirtio_mmio_base = base;\n+\t\t\tbreak;\n \t\tcase BI_MEMCHUNK:\n \t\t\tgd->ram_size = record->data[1];\n \t\t\tbreak;\n@@ -80,6 +120,13 @@ int board_early_init_f(void)\n \treturn 0;\n }\n \n+int board_early_init_r(void)\n+{\n+\tcreate_virtio_mmios();\n+\n+\treturn 0;\n+}\n+\n int checkboard(void)\n {\n \tputs(\"Board: QEMU m68k virt\\n\");\n","prefixes":["v3","5/5"]}