Я играю с KVM на Intel x86-64, пишу оболочку Python для API.
Я понял, что могу запустить 16-битный код в реальном режиме и выполнить in/out
инструкции, а также MMIO для чтения и записи.
На следующем шаге я пытался настроить контроллер прерываний и ввести IRQ в гостевую систему, но ни одна из моих попыток сделать это, похоже, не работает.
Я пытался использовать KVM_CREATE_IRQCHIP
и настраивать маршруты IRQ для перехода к PIC главного / подчиненного устройства, а также к APIC, но даже если я делаю это, выполнение KVM_IRQ_LINE
, похоже, не перенаправляет поток выполнениядля обработчика прерываний, вместо этого гостевой код продолжает выполняться линейно.
То же поведение, если я не настраиваю APIC в ядре и использую KVM_INTERRUPT
, и даже с KVM_NMI
гость не выполняетпохоже, что это влияет каким-либо образом.
Я проверил, включен ли флаг разрешения прерываний в гостевом регистре EFLAGS
.
Есть ли санкционированный способ настройки гостевой виртуальной машины таким образом, чтобыЯ могуввести прерывание в него через KVM? И если да, может кто-нибудь пролить свет на то, как это сделать? Я рад взять код C / C ++ и адаптировать его к моей среде Python, но я был бы признателен за пошаговое руководство!
Спасибо.