Arm 虚拟中断

来源:互联网 发布:淘宝客返利网站 编辑:程序博客网 时间:2024/05/17 04:46

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

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

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

struct vgic_v3_cpu_if {u32vgic_hcr;u32vgic_vmcr;u32vgic_sre;/* Restored only, change ignored */u32vgic_elrsr;/* Saved only */u32vgic_ap0r[4];u32vgic_ap1r[4];u64vgic_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注入虚拟中断;


(未完待续。。。)