什么是“irqchip”?

What is an “irqchip”?

参考QEMU x86_64机器选项kernel_irqchip=on|off,描述如下:

Controls in-kernel irqchip support for the chosen accelerator when available

什么是 "irqchip"?

An "irqchip" 是 KVM 对通常称为 "interrupt controller" 的名称的称呼。这是一个硬件,它接收大量中断信号(来自 USB 控制器、磁盘控制器、PCI 卡、串行端口等设备)并以一种让 CPU 控制启用哪些中断、在新中断到达时收到通知、解除已处理的中断等。

模拟系统 (VM) 需要模拟中断控制器,就像真实硬件具有真实硬件中断控制器一样。在 KVM VM 中,可以像所有其他模拟设备一样将此模拟设备置于用户空间(即 QEMU)中。但是由于中断控制器与模拟中断的处理密切相关,因此当来宾操作中断控制器时,必须频繁地在内核和用户空间之间来回切换,这对性能不利。因此,KVM 在内核("in-kernel irqchip")中提供了一个中断控制器的仿真,QEMU 可以使用它来代替在用户空间中提供自己的版本。 (至少在某些架构上,内核 irqchip 还能够使用硬件辅助来虚拟化中断处理,而用户空间版本不能,这进一步提高了 VM 性能。)

默认的 QEMU 设置是使用内核内的 irqchip,这样可以提供最佳性能。所以你不需要用这个命令行选项做任何事情,除非你知道你有一个特定的原因为什么内核 irqchip 不适合你。