virtio协议1.0 -- 设备初始和操作

本文详细阐述了virtio设备的初始化过程,包括设备重置、特征位协商、状态设置等步骤,并介绍了设备操作,如发送和接收数据的流程,以及设备清理和移除的注意事项。在设备操作部分,重点讲解了如何通过desc表和availring进行数据传输,并涉及到内存屏障和KICK机制。最后,讨论了设备清理时的驱动状态管理和队列安全性。
摘要由CSDN通过智能技术生成

  • 设备初始化

    • 驱动初始化步骤
    1.  Reset 设备
    2.  设置 ACKNOWLEDGE 状态,通知设备:客户机设别了设备
    3.  设置 DRIVER 状态,客户机找到了对应的驱动
    4.  读取设备的 feature bit 并写会驱动支持的 feature bit 子集到设备,接收feature bit前驱动可能读取 device-specific configuration 进行细粒度校验
    5. 设置 FEATURES_OK,此后,驱动不能在接受更多新的 feature bit
    6. 读取设备状态,确保FEATURES_OK 写入成功,如果不是 FEATURES_OK,说明特性协商不成功,设备不可用
    7. 进行 device-specific 设定,包括配置 virtio configuration space,设定 virtqueue等
    8. 设定 DRIVER_OK,表示设备可用,驱动加载完成
    • 如果任何一个步骤有错,驱动设置FAILED状态,放弃设备初始化
    • 在 DRIVER_OK 前,不能下发 KICK
    • 区别
      • Legacy 设备不支持 FEATURES_OK 状态,没有机会检查兼容性
      • Legacy 设备没有明确的feature协商状态
      • 步骤5,6没有;
  • 设备操作

  • 两种设备操作:发送(发送给设备,tx)和接收(从设
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值