w dokumentacji kvm to jest to, co powiedziano o tym, kiedy wirtualny interupt można wstrzykiwać. Herezje link http://os1a.cs.columbia.edu/lxr/source/Documentation/kvm/api.txt
spojrzenie na linii numer 905.
Struktura struct kvm_run myślę daje kontrolę aplikacji, w jaki to czyni VM behave.Use Cscope i poszukać request_interrupt_window ciągu w kodzie źródłowym, będzie zrozumieć jak kvm zobaczyć, kiedy wprowadzić gościa do wstrzyknięcia przerwania.Również przejść przez plik api.txt jest to bardzo pomocne.
Cheers
EDITED
Oto jeden przykład przyjmującego wstrzykiwaniem interupts do gościa.
Załóżmy, że nie było winy strony w GOŚĆ VM
- Powoduje to VMEXIT
- hypervisor/KVM obsługuje się VMEXIT
- Jego widzi przyczynę VMEXIT poprzez struktury kontroli VMCS i okaże się, że nie było błąd strony.
- Gospodarz/KVM jest odpowiedzialny za wirtualizację pamięci, więc należy sprawdzić, czy usterka strona została spowodowana
- ponieważ strona nie została przydzielona dla gości, w którym to przypadku nazywa alloc_page w jądrze gospodarzem i robi VMENTRY, aby wznowić wykonanie GUEST.
- Lub mapowanie zostało usunięte przez system GUEST, w tym przypadku KVM używa struktury kontrolnej VMCS jako medium komunikacyjnego do wstrzyknięcia wirtualnego no 14, co powoduje, że jądro GUEST radzi sobie z błędem strony.
Jest to jeden z przykładów gospodarza wkładania wirtualnego interupt. Oczywiście istnieje wiele innych sposobów/powodów, aby to zrobić.
Można rzeczywiście skonfigurować VMCS aby gościa zrobić VMEXIT po wykonaniu każdej instrukcji Można to zrobić przy użyciu flagi MONITOR pułapkę.