KVM Interrupt Virtualization

KVM为每个虚拟机模拟pic主从中断控制器和ioapic,通过中断路由表进行中断处理。中断注入在VM_ENTRY前通过VMCS的VM-Entry interruption-information field实现,遵循Intel手册中关于事件注入的控制字段描述。中断处理包括外部中断、NMI、异常、软件中断和陷阱,通过VMCS的中断信息字段向guest注入事件。
摘要由CSDN通过智能技术生成

对于x86架构,KVM为每个虚拟机维护一个pic主中断控制器、一个pic从中断控制器以及一个ioapic控制器(使用pic 加 ioapic 的两种芯片的模拟组合,来控制中断信息),ioapic根据自身维护的重定向表pci irq routing table格式化出一条中断消息,把中断消息发送给local apic(lapic),每个vcpu维护一个lapic控制器,每个vcpu的lapic控制器则模拟了主要的apic寄存器:中断请求寄存器IRR,中断屏蔽寄存器IMR,中断服务寄存器ISR,EOI。同时每个虚拟机有一张中断路由表(kvm_irq_routing_table),chip是一个二维数组,表示三个芯片的各个管脚,每个芯片有24个管脚,每个数组项纪录对应管脚(中断)的gsi号,每个中断都有自己的routing_entry (struct kvm_kernel_irq_routing_entry),routing_entry保存了中断的类型(pci、ioapic、msi)、中断号、以及set触发函数,所有的routing_entry以gsi为索引信息挂接到route_table的map链表里(可能同一个中断号会同时关联pic、ioapic两种中断type)。

对 KVMTOOL 触发的中断,处理大致分三部分:查路由表&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值