Arm 虚拟中断

虚拟中断与物理中断的映射:

1)当kvm向VM注入一个虚拟中断时,中断信息保存在lr寄存器中,包含了中断号、中断优先级、中断状态(activate、pending)等信息

2)lr里还有一个HW标志位信息,HW置为1时,lr寄存器中会加入相应的物理终端号信息,这样在VM里deactivate一个虚拟中断时会同步deactivate对应的物理中断;

struct vgic_v3_cpu_if {
	u32		vgic_hcr;
	u32		vgic_vmcr;
	u32		vgic_sre;	/* Restored only, change ignored */
	u32		vgic_elrsr;	/* Saved only */
	u32		vgic_ap0r[4];
	u32		vgic_ap1r[4];
	u64		vgic_lr[VGIC_V3_MAX_LRS];
};


中断处理流程:

1:建立虚拟中断与物理中断的映射关系(再确认下??)

2:收到中断,被EL2捕获(可以通过设置HCR_EL2的IMO、FMO,让中断直通到VM,默认是会路由到EL2);

3:EL2将VM拉回到HOST;

4:重新使能中断(local_irq_enable),进入HOST的物理中断处理函数;

5:在物理中断处理函数中向VM注入虚拟中断;


(未完待续。。。)



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值