9aa57b6c53
1. virtio devics/drivers match and probe/remote mechanism; 2. virtio mmio transport layer based on OpenAmp (Compatible with both virtio mmio version 1 and 2); 3. virtio-serial driver based on new virtio framework; 4. virtio-rng driver based on new virtio framework; 5. virtio-net driver based on new virtio framework (IOB Offload implementation); 6. virtio-blk driver based on new virtio framework; 7. Remove the old virtio mmio framework, the old framework only support mmio transport layer, and the new framwork support more transport layer and this commit has implemented all the old virtio drivers; 8. Refresh the the qemu-arm64 and qemu-riscv virtio related configs, and update its README.txt; New virtio-net driver has better performance Compared with previous virtio-mmio-net: | | master/-c | master/-s | this/-c | this/-s | | :--------------------: | :-------: | :-------: | :-----: | :-----: | | qemu-armv8a:netnsh | 539Mbps | 524Mbps | 906Mbps | 715Mbps | | qemu-armv8a:netnsh_smp | 401Mbps | 437Mbps | 583Mbps | 505Mbps | | rv-virt:netnsh | 487Mbps | 512Mbps | 760Mbps | 634Mbps | | rv-virt:netnsh_smp | 387Mbps | 455Mbps | 447Mbps | 502Mbps | | rv-virt:netnsh64 | 602Mbps | 595Mbps | 881Mbps | 769Mbps | | rv-virt:netnsh64_smp | 414Mbps | 515Mbps | 491Mbps | 525Mbps | | rv-virt:knetnsh64 | 515Mbps | 457Mbps | 606Mbps | 540Mbps | | rv-virt:knetnsh64_smp | 308Mbps | 389Mbps | 415Mbps | 474Mbps | Note: Both CONFIG_IOB_NBUFFERS=64, using iperf command, all in Mbits/sec Tested in QEMU 7.2.2 Signed-off-by: wangbowen6 <wangbowen6@xiaomi.com> Signed-off-by: Zhe Weng <wengzhe@xiaomi.com>
64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
#
|
|
# For a description of the syntax of this configuration file,
|
|
# see the file kconfig-language.txt in the NuttX tools repository.
|
|
#
|
|
|
|
menuconfig DRIVERS_VIRTIO
|
|
bool "Virtio Device Support"
|
|
depends on OPENAMP
|
|
default n
|
|
|
|
if DRIVERS_VIRTIO
|
|
config DRIVERS_VIRTIO_MMIO
|
|
bool "Virtio MMIO Device Support"
|
|
default n
|
|
|
|
config DRIVERS_VIRTIO_MMIO_QUEUE_LEN
|
|
int "Virtio MMIO Virtio Queue Length"
|
|
default 0
|
|
range 0 1024
|
|
depends on DRIVERS_VIRTIO_MMIO
|
|
---help---
|
|
If this value equals to 0, use the max queue length get from
|
|
mmio register.
|
|
|
|
config DRIVERS_VIRTIO_BLK
|
|
bool "Virtio block support"
|
|
depends on !DISABLE_MOUNTPOINT
|
|
default n
|
|
|
|
config DRIVERS_VIRTIO_NET
|
|
bool "Virtio network support"
|
|
depends on NETDEVICES
|
|
default n
|
|
select ARCH_HAVE_NETDEV_STATISTICS
|
|
select NETDEV_LATEINIT
|
|
|
|
config DRIVERS_VIRTIO_NET_BUFNUM
|
|
int "Virtio network driver buffer number"
|
|
default 0
|
|
depends on DRIVERS_VIRTIO_NET
|
|
---help---
|
|
The buffer number in each virtqueue. (We have 2 virtqueues.)
|
|
If this value equals to 0, use CONFIG_IOB_NBUFFERS / 4 for each.
|
|
Normally we get just a little improvement for >8 buffers, and very little for >32.
|
|
|
|
config DRIVERS_VIRTIO_RNG
|
|
bool "Virtio rng support"
|
|
default n
|
|
select ARCH_HAVE_RNG
|
|
|
|
config DRIVERS_VIRTIO_SERIAL
|
|
bool "Virtio serial support"
|
|
depends on SERIAL
|
|
default n
|
|
select SERIAL_RXDMA
|
|
select SERIAL_TXDMA
|
|
|
|
if DRIVERS_VIRTIO_SERIAL
|
|
config DRIVERS_VIRTIO_SERIAL_BUFSIZE
|
|
int "Virtio serial driver buffer size"
|
|
default 256
|
|
endif
|
|
endif # DRIVERS_VIRTIO
|