GIC/ITS代码分析(13)LPI中断虚拟化之KVM中ITS设备的模拟

1 ITS设备的注册

        ITS设备和GIC设备通过函数kvm_register_device_ops()注册不同的操作函数,如下所示:

 2 系统调用KVM_CREATE_DEVICE

        在QEMU中会调用系统调用KVM_CREATE_DEVICE为ITS创建设备,并最终与fd关联,过程如下:

过程如下:

  1. 分配kvm_device,并根据设备类型,设置dev->ops,当ITS设备时ops=kvm_arm_vgic_its_ops;当GIC设备时ops=kvm_arm_vgic_v3_ops;
  2. 调用设备ops->create()回调,创建vgic_its,并设置部分成员,详细如下所示:
  3. 将ITS设备添加到kvm中
  4. 调用anon_inode_getfd()将ITS设备与fd关联,对设备操作的文件操作符kvm_device_fops

3 ITS命令的模拟

        这里主要是对CWRITE寄存器的模拟。当guest中发送ITS命令给ITS设备时,这时会以写CWRITE寄存器结束,这里会陷入到host中,并对CWRITE寄存器进行模拟。过程如下所示:

 这里主要对MAPD/MAPC/MAPI命令的模拟,如下图所示,这三个命令会构建如下结构体:

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值