我想在 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区域的配置数据不可用,无法安装驱动程序。