1 Star 0 Fork 1

xiaodingding/virtio

forked from databuser/virtio 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
1. virtio移植自Linux4.19内核,transport目前支持mmio,pci legacy,pci modern三种方式。

2. virtio设备驱动目前支持: virtio block,net.

3. 本工程可以编译为内核静态库或者内核驱动模块,方便不同使用需求,通过修改config.mk
   中的COMPILE_TYPE为klib或者kmodule来编译为不同目标文件.
   
4. 使用说明:
   a. 当编译为内核静态库使用时,通过以下示例代码来初始化virtio:
   
      virtio_init();
      virtio_mmio_device_register((void *)VIRT_IO_MMIO, 48);
      virtio_pci_driver_register();
      virtio_blk_driver_register();
      virtio_net_driver_init();
      
      其中virtio_mmio_device_register()需要传入mmio设备基址和起始中断号(假设中断号是连续增加的),
      这两个值在使用qemu不同模拟平台时可能不同,根据实际情况进行修改。
      
      如果是pci设备的话就不要操心上面的问题,因为设备的寄存器等信息都在pci设备的bar空间中,
      virtio_pci_driver_register注册时会自动探测.
      
   b. 当编译为内核驱动模块使用时,只驱动pci总线上的virtio设备.
   
5. 测试
   1. 在qemu aarch64平台下通过1个mmio块设备和两个pci块设备还有一个pci网络设备来测试,qemu启动命令如下:
   
      sudo qemu-system-aarch64  -M virt -cpu cortex-a53 -nographic -smp 4 -kernel bspvirt.elf -m 1024M \
      -drive file=virtio-blk.img,if=none,format=raw,id=hd0 -device virtio-blk-pci,drive=hd0 \
      -net tap -netdev tap,id=tap0 -device virtio-net-pci,netdev=tap0 \
      -drive file=virtio-blk1.img,if=none,format=raw,id=hd1 -device virtio-blk-pci,drive=hd1 \
      -drive file=virtio-blk2.img,if=none,format=raw,id=hd2 -device virtio-blk-device,drive=hd2
   
      系统启动后,通过ints命令可以看到注册了两个pci modern块设备和一个pci modern网络设备和一个mmio块设备中断:
      [root@sylixos:/root]# ints
      interrupt vector show >>
      
       IRQ      NAME            ENTRY            CLEAR      ENABLE RND PREEMPT PRIO     CPU 0    
      ---- -------------- ---------------- ---------------- ------ --- ------- ---- -------------
        30 tick_isr               40000658                0 true                  0           249 
        33 uart0_isr              400052e0                0 true                160           267 
        36 virt_blk_pci_m         40007e00                0 true                160            13 
        37 virt_net_pci_m         40007e00                0 true                160            19 
        38 virt_blk_pci_m         40007e00                0 true                160             2 
        79 virt_blk_mmio          40007250                0 true                160             2 


      
   2. 在qemu x86-64平台下通过一个pci块设备和一个pci网络设备来测试,qemu启动命令如下:
      sudo  qemu-system-x86_64 \
      -M q35 -smp 2 -m 2G \
      -hda virtio-blk.img \
      -drive file=virtio-blk1.img,if=none,format=raw,id=hd1 -device virtio-blk-pci,drive=hd1 \
      -net tap -netdev tap,id=tap0 -device virtio-net-pci,netdev=tap0  \
      -vga virtio \
      -display gtk,gl=on \
      -kernel bspx64.elf
      
      系统启动后,通过ints命令可以看到注册了一个pci modern块设备和一个pci modern网络设备中断

空文件

简介

移植到SylixOS下virtio相关驱动 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/xiaodingding/virtio.git
git@gitee.com:xiaodingding/virtio.git
xiaodingding
virtio
virtio
master

搜索帮助