You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KVM/QEMU中kvm_inj_virq事件irq字段含义及对应中断类型查询

解析KVM/QEMU中kvm_inj_virq事件的IRQ编号映射

KVM给虚拟机注入的虚拟IRQ编号没有固定的全局映射,会随虚拟机配置、设备类型(virtio/PCI passthrough)、内核版本变化而不同。以下是精准查找对应关系的方法,以及常见场景的参考:

一、从虚拟机内部查询(最准确)

直接登录目标虚拟机,通过系统文件查看IRQ与设备的绑定:

  • 查看所有IRQ的分配情况:cat /proc/interrupts
  • 查看指定IRQ对应的设备:cat /proc/irq/<IRQ_NUM>/device
  • 查看IRQ的处理程序:cat /proc/irq/<IRQ_NUM>/handler
  • 对于virtio设备,用lspci -v查看,virtio设备多使用MSI-X中断,输出中会显示对应的虚拟IRQ编号。

二、从宿主机QEMU进程获取信息

在宿主机上通过QEMU的监控或进程数据关联IRQ与设备:

  1. 进入QEMU监控台(默认快捷键Ctrl+Alt+2),执行info pic命令,可查看虚拟机PIC/APIC管理的IRQ及关联设备。
  2. 针对virtio设备,执行info virtio,能看到每个virtio设备对应的中断向量(即虚拟IRQ编号)。
  3. 用ps aux | grep qemu找到QEMU进程,结合pstree查看其设备线程,再匹配trace-cmd追踪的时间点,定位具体设备的中断注入。

三、内核与KVM源码的标准参考

x86架构虚拟机的通用虚拟IRQ类型有这些常见对应:

  • 本地定时器中断:PIC模式下为IRQ 0,APIC模式下映射为向量32(APIC将前32个向量预留为CPU异常)。
  • virtio块设备(磁盘):多使用MSI-X中断,IRQ编号通常从32开始,具体依配置而定。
  • virtio网络设备:同样采用MSI-X中断,IRQ编号与磁盘设备不重叠,一般也在32以上。
  • PCI passthrough设备:虚拟IRQ编号会映射到宿主机物理IRQ,虚拟机内可通过lspci查看对应关系。

四、关键注意点

  • 传统PIC模式下,虚拟机IRQ 0-15对应经典设备(如IRQ0定时器、IRQ1键盘),但现代虚拟机普遍启用APIC模式,此时虚拟IRQ向量从32开始分配。
  • 启用MSI/MSI-X的设备可拥有多个中断向量,对应的IRQ编号会分布在32以上的区间。

内容的提问来源于stack exchange,提问作者TNT Captain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:15:24