[PATCH v2 2/2] doc: emulation: Add network testing documentation

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Wed Dec 31 16:23:19 CET 2025


On 12/30/25 16:45, Manjae Cho wrote:
> Add network testing documentation for QEMU emulation based on actual
> runtime testing with qemu-system-riscv64 and U-Boot.
> 
> Tested and verified:
> - VirtIO network device detection (virtio-net-device)
> - DHCP client functionality
> - TFTP file loading from QEMU's built-in TFTP server
> 
> The documentation covers VirtIO devices for both MMIO-based (RISC-V)
> and PCI-based (x86) machines, with practical examples of U-Boot commands
> and expected output.

In the meantime I sent

[PATCH 1/1] doc: describe QEMU networking
https://lore.kernel.org/u-boot/20251229163448.182538-1-heinrich.schuchardt@canonical.com/

Did you have a chance to look at it?

> 
> Signed-off-by: Manjae Cho <manjae.cho at samsung.com>
> ---
>   doc/board/emulation/index.rst   |  1 +
>   doc/board/emulation/network.rst | 58 +++++++++++++++++++++++++++++++++
>   2 files changed, 59 insertions(+)
>   create mode 100644 doc/board/emulation/network.rst
> 
> diff --git a/doc/board/emulation/index.rst b/doc/board/emulation/index.rst
> index f8908166276..507c38825c1 100644
> --- a/doc/board/emulation/index.rst
> +++ b/doc/board/emulation/index.rst
> @@ -8,6 +8,7 @@ Emulation
>   
>      acpi
>      blkdev
> +   index
>      qemu-arm
>      qemu-mips
>      qemu-ppce500
> diff --git a/doc/board/emulation/network.rst b/doc/board/emulation/network.rst
> new file mode 100644
> index 00000000000..6a08a6611b4
> --- /dev/null
> +++ b/doc/board/emulation/network.rst
> @@ -0,0 +1,58 @@
> +.. SPDX-License-Identifier: GPL-2.0+

.. SPDX-License-Identifier: GPL-2.0-or-later

see https://spdx.org/licenses/GPL-2.0-or-later.html

> +
> +Emulation of network devices
> +-----------------------------
> +
> +QEMU can emulate network devices for testing U-Boot networking functionality.
> +The device type depends on the machine architecture:
> +
> +* VirtIO (for RISC-V and other virtio-bus machines)

RISC-V also supports PCI. For productive use the important message is 
that virtio-net provides the fastest emulation by hardware emulation.

> +
> +  .. code-block:: bash
> +
> +      qemu-system-riscv64 -nographic -machine virt -bios opensbi.bin \
> +      -kernel u-boot.bin -m 256M \
> +      -netdev user,id=net0 -device virtio-net-device,netdev=net0
> +
> +* VirtIO PCI (for x86 and other PCI-based machines)
> +
> +  .. code-block:: bash
> +
> +      qemu-system-x86_64 -nographic -bios u-boot.bin \
> +      -netdev user,id=net0 -device virtio-net-pci,netdev=net0
> +
> +The 'user' networking backend provides a simple way to test DHCP and basic
> +networking without host configuration. In U-Boot, you can verify the network
> +device is detected:
> +
> +.. code-block:: none
> +
> +    => net list
> +    eth0 : virtio-net#0 52:54:00:12:34:56 active



> +
> +TFTP boot
> +^^^^^^^^^

TFTP boot is disabled via `setenv autoload no`. The heading seems not to 
match the content of the section.

The dhcp, net, and tftpboot commands should be documented in 
doc/usage/cmd/. But mentioning them here looks ok to me.

Best regards

Heinrich


> +
> +QEMU's user networking includes a built-in TFTP server. To enable it, specify
> +a host directory to serve files from:
> +
> +.. code-block:: bash
> +
> +    -netdev user,id=net0,tftp=/path/to/tftp/root
> +
> +From U-Boot, you can load files using DHCP and TFTP:
> +
> +.. code-block:: none
> +
> +    => setenv autoload no
> +    => dhcp
> +    DHCP client bound to address 10.0.2.15 (1 ms)
> +    => tftp ${loadaddr} test.txt
> +    Using virtio-net#0 device
> +    TFTP from server 10.0.2.2; our IP address is 10.0.2.15
> +    Filename 'test.txt'.
> +    Load address: 0x80200000
> +    Loading: *
> +             15.6 KiB/s
> +    done
> +    Bytes transferred = 16 (10 hex)



More information about the U-Boot mailing list