参考:http://www.lxway.com/4405095264.htm
Guest内核发送IPI,也就是向虚拟机APIC的寄存器中写入,对APIC的写动作会被截获,并退出到ROOT模式,对APIC的写动作调用 apic_reg_write()
static const struct kvm_io_device_ops apic_mmio_ops = {
.read = apic_mmio_read,
.write = apic_mmio_write,
};
apic_mmio_write -> apic_reg_write
apic_reg_write
-> case APIC_ICR: apic_send_ipi()
-> 设定目的CPU//irq.dest_id = GET_APIC_DEST_FIELD(icr_high);
-> kvm_irq_delivery_to_apic //发送到目的VCPU
-> kvm_apic_set_irq(vcpu, irq, dest_map);