谁来配置qemu中的virtio,mmio设备注册?

问题描述 投票:0回答:0

我想在 qemu 上启用 virtio_net,如果设备 ID 为零,virtio_net 驱动程序应该返回错误(从 https://docs.oasis-open.org/virtio/virtio/v1.1/virtio-v1.1 读取.html).

在qemu中,0x0A000000地址用于virtio,mmio区域。当我打印 0x0A000000 的内存转储时,我只得到幻数、供应商 ID 和由 qemu 设置的 mmio 版本。但我的驱动程序需要设备 ID 和其他值,如设备功能、最大队列大小等。但将这些值设置为零。

所以我的问题是谁将在 virtio 中写入配置数据,mmio 设备寄存器(在我的例子中 mmio 区域是 0x0A000000)如果 qemu 那么使用哪个命令? (我正在使用我的自定义 kdi)

Qemu 命令: qemu-system-aarch64 -M virt-7.1,virtualization=on -cpu cortex-a72 -m 512 -smp 1 -display none -serial mon:stdio -device loader,addr=0x50004000,cpu-num=0,file=/ tftp/sd.kdi -device loader,addr=0x50004020,cpu-num=0 -netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no -device e1000,netdev=mynet0,mac=52: 55:00:d1:55:01

0x0A000000 的内存转储:

(gdb) x/64x 0x0a000000 0xa000000: 0x74726976 0x00000001 0x00000000 0x554d4551 0xa000010: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000020: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000030: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000040: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000050: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000060: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000070: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000080: 0x00000000 0x00000000 0x00000000 0x00000000 0xa000090: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000a0: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000b0: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000c0: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000d0: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000e0: 0x00000000 0x00000000 0x00000000 0x00000000 0xa0000f0: 0x00000000 0x00000000 0x00000000 0x00000000

我试过qemu命令来配置virtio_net,但是由于virtio,mmio区域的配置数据不可用,无法安装驱动程序。

qemu qemu-device virtio
© www.soinside.com 2019 - 2024. All rights reserved.