virtio前端驱动能够通知后端的原理

我们知道VM里的virtio后端驱动在发送报文的时候,当准备好之后需要通知前端。通知的函数是调用

调用关系 virtqueue_kick--> virtqueue_notify-->vp_notify
/* the notify function used when creating a virt queue */
bool vp_notify(struct virtqueue *vq)
{
    /* we write the queue's selector into the notification register to
     * signal the other end */
    iowrite16(vq->index, (void __iomem *)vq->priv);
    return true;
}

如果是qemu kvm虚拟化的话,很多文章说iowrite16的io操作被KVM捕获,引起vm_exit,进入KVM的处理。细说的话这其实是硬件帮助完成的,即硬件辅助虚拟化,这也是为什么KVM需要BIOS中设置打开VT-d的原因,具体要看intel的sdm。
参考intel SDM 24.6.2:在这里插入图片描述
图片取自参考1
参考:KVM PIO原理
http://www.cnblogs.com/ck1020/p/6066007.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值