From: Kuan-Wei Chiu <visitorckw@gmail.com>
To: Daniel Palmer <daniel@thingy.jp>
Cc: trini@konsulko.com, angelo@kernel-space.org, bmeng.cn@gmail.com,
sjg@chromium.org, u-boot@lists.denx.de
Subject: Re: [PATCH v6 8/8] board: qemu: m68k: Create virtio mmio instances
Date: Fri, 8 May 2026 01:13:09 +0800 [thread overview]
Message-ID: <afzIJQRmvH8ppToK@google.com> (raw)
In-Reply-To: <20260505074948.2603870-9-daniel@thingy.jp>
On Tue, May 05, 2026 at 04:49:41PM +0900, Daniel Palmer wrote:
> So that you can use virtio network, block etc create the virtio mmio
> instances. There are 128 of these even if they are not all used, a
> single mmio base value is passed via bootinfo.
>
> Reviewed-by: Angelo Dureghello <angelo@kernel-space.org>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> Signed-off-by: Daniel Palmer <daniel@thingy.jp>
Reviewed-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Tested-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Regards,
Kuan-Wei
> ---
> arch/m68k/Kconfig | 14 +++++----
> board/emulation/qemu-m68k/qemu-m68k.c | 45 +++++++++++++++++++++++++++
> 2 files changed, 53 insertions(+), 6 deletions(-)
>
> diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
> index 00e89bd0a625..8bebf0ea3e13 100644
> --- a/arch/m68k/Kconfig
> +++ b/arch/m68k/Kconfig
> @@ -196,12 +196,14 @@ config TARGET_STMARK2
> select M54418
>
> config TARGET_QEMU_M68K
> - bool "Support QEMU m68k virt"
> - select M68040
> - imply CMD_DM
> - help
> - This target supports the QEMU m68k virtual machine (-M virt).
> - It simulates a Motorola 68040 CPU with Goldfish peripherals.
> + bool "Support QEMU m68k virt"
> + select M68040
> + select BOARD_EARLY_INIT_R
> + select VIRTIO_MMIO
> + imply CMD_DM
> + help
> + This target supports the QEMU m68k virtual machine (-M virt).
> + It simulates a Motorola 68040 CPU with Goldfish peripherals.
>
> endchoice
>
> diff --git a/board/emulation/qemu-m68k/qemu-m68k.c b/board/emulation/qemu-m68k/qemu-m68k.c
> index d3527aee1128..a19b23a28ce3 100644
> --- a/board/emulation/qemu-m68k/qemu-m68k.c
> +++ b/board/emulation/qemu-m68k/qemu-m68k.c
> @@ -14,9 +14,14 @@
> #include <asm/bootinfo.h>
> #include <asm/global_data.h>
> #include <asm/io.h>
> +#include <dm.h>
> +#include <dm/device-internal.h>
> +#include <dm/lists.h>
> #include <dm/platdata.h>
> +#include <dm/root.h>
> #include <linux/errno.h>
> #include <linux/sizes.h>
> +#include <virtio_mmio.h>
>
> DECLARE_GLOBAL_DATA_PTR;
>
> @@ -25,6 +30,38 @@ static struct goldfish_rtc_plat rtc_plat;
> static struct goldfish_timer_plat timer_plat;
> static struct qemu_virt_ctrl_plat reset_plat;
>
> +#define VIRTIO_MMIO_NUM 128
> +#define VIRTIO_MMIO_SZ 0x200
> +
> +static struct virtio_mmio_plat virtio_mmio_plat[VIRTIO_MMIO_NUM];
> +static char virtio_mmio_names[VIRTIO_MMIO_NUM][11];
> +static phys_addr_t virtio_mmio_base;
> +
> +static int create_virtio_mmios(void)
> +{
> + struct driver *drv;
> + int i, ret;
> +
> + if (!virtio_mmio_base)
> + return -ENODEV;
> +
> + drv = lists_driver_lookup_name("virtio-mmio");
> + if (!drv)
> + return -ENOENT;
> +
> + for (i = 0; i < VIRTIO_MMIO_NUM; i++) {
> + virtio_mmio_plat[i].base = virtio_mmio_base + (VIRTIO_MMIO_SZ * i);
> + sprintf(virtio_mmio_names[i], "virtio-%d", i);
> +
> + ret = device_bind(dm_root(), drv, virtio_mmio_names[i],
> + &virtio_mmio_plat[i], ofnode_null(), NULL);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> /*
> * Theoretical limit derivation:
> * Max Bootinfo Size (Standard Page) = 4096 bytes
> @@ -65,6 +102,9 @@ static void parse_bootinfo(void)
> case BI_VIRT_CTRL_BASE:
> reset_plat.reg = base;
> break;
> + case BI_VIRT_VIRTIO_BASE:
> + virtio_mmio_base = base;
> + break;
> case BI_MEMCHUNK:
> gd->ram_size = record->data[1];
> break;
> @@ -80,6 +120,11 @@ int board_early_init_f(void)
> return 0;
> }
>
> +int board_early_init_r(void)
> +{
> + return create_virtio_mmios();
> +}
> +
> int checkboard(void)
> {
> puts("Board: QEMU m68k virt\n");
> --
> 2.53.0
>
next prev parent reply other threads:[~2026-05-07 17:13 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-05 7:49 [PATCH v6 0/8] Add virtio-mmio support to m68k virt machine Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 1/8] sysreset: qemu virt: Use __raw_writel() Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 2/8] rtc: goldfish: Use __raw_readl() and __raw_writel() Daniel Palmer
2026-05-07 13:27 ` Simon Glass
2026-05-05 7:49 ` [PATCH v6 3/8] timer: goldfish: Use __raw_readl() Daniel Palmer
2026-05-07 13:27 ` Simon Glass
2026-05-05 7:49 ` [PATCH v6 4/8] m68k: Fix writew(), writel(), readw(), readl() endianness for classic m68k Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 5/8] virtio: mmio: Allow instantiation via platform data Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 6/8] virtio: cmd: Depend on VIRTIO_BLK Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 7/8] virtio: blk: Fix converting the vendor id to a string Daniel Palmer
2026-05-05 7:49 ` [PATCH v6 8/8] board: qemu: m68k: Create virtio mmio instances Daniel Palmer
2026-05-07 17:13 ` Kuan-Wei Chiu [this message]
2026-05-08 19:29 ` [PATCH v6 0/8] Add virtio-mmio support to m68k virt machine Tom Rini
2026-05-11 8:50 ` Daniel Palmer
2026-05-11 15:00 ` Tom Rini
2026-05-14 12:35 ` Daniel Palmer
2026-05-14 13:51 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=afzIJQRmvH8ppToK@google.com \
--to=visitorckw@gmail.com \
--cc=angelo@kernel-space.org \
--cc=bmeng.cn@gmail.com \
--cc=daniel@thingy.jp \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.