저는 KVM 관련 작업을 해왔으며 알아낼 수없는 몇 가지 질문을 가지고 있습니다.KVM이 인터럽트를 처리하는 방법
> 우리가 알다시피 일반적으로 외부 인터럽트는 VMexit을 유발하고 하이퍼 바이저는 게스트 용인 경우 가상 인터럽트를 주입합니다. 그러면 어떤 irq가 주입 될 것인가? (나는 게스트 IDT를 인덱싱하기위한 인터럽트 벡터를 의미한다)? KVM이 이것 (호스트 IRQ를 게스트 가상 IRQ와 연결)에 대해 어떻게 알 수 있습니까?
2> 게스트에 할당 된 장치의 경우 하이퍼 바이저가 해당 IRQ를 게스트에게 전달합니다. 코드를 추적하여, 나는 호스트 IRQ가 손님의 (나는 인터럽트 벡터를 의미한다)와 다르다는 것을 알았다. KVM이 게스트가 사용해야하는 인터럽트 벡터를 구성하는 방법은 무엇입니까?
3> VMCS의 일부 필드를 설정하여 외부 인터럽트를 종료하지 않도록 설정 한 경우 실제 인터럽트 중에 어떤 일이 발생합니까? CPU가 응답 인터럽트를 위해 게스트 IDT를 사용합니까? 그렇다면 KVM이 게스트 용으로 다른 IDT를 사용하도록 CPU를 리디렉션 할 수 있습니까?
4> 게스트 IDT는 어디에 있습니까? 그것은 vcpu 및 레지스터 (IDTR 포함)를 초기화하는 동안 qemu에 의해 구성됩니까?
정말 내 질문에 답할 수 있기를 바랍니다. 나는 매우 감사 할 것입니다.
감사