Я занимаюсь KVM, и у меня есть пара вопросов, в которых я не могу понять.
1> как мы знаем, обычно внешнее прерывание вызывает VMexit, а гипервизор вводит виртуальное прерывание, если оно для гостя. Тогда какой irq будет введен (я имею в виду вектор прерывания для индексации гостевой IDT)? Как KVM узнает об этом (связать IRQ хоста с гостевым виртуальным IRQ)?
2> если для устройства, назначенного гостю, гипервизор доставит это IRQ гостю. отслеживая код, я обнаружил, что IRQ хоста отличается от гостя (я имею в виду вектор прерывания). как KVM настроить, какой вектор прерывания должен использовать гость?
3> если мы настроим не выходить по внешнему прерыванию, установив какое-либо поле в VMCS, что будет происходить во время физических прерываний? будет ли ЦП использовать гостевую IDT для прерывания ответа? Если да, может ли KVM перенаправить ЦП на использование другой IDT для гостя (при условии изменения IDTR)?
4> где находится гостевая IDT? это настроено qemu при инициализации vcpu и регистров (включая IDTR)?
Я очень надеюсь, что кто-нибудь сможет ответить на мои вопросы. Я буду очень признателен.
Спасибо