[1.] One line summary: [KVM/VMX] Level triggered interrupts mishandled on Windows w/ nested virt(Credential Guard) when using split irqchip [2.] Problem/Report: When running Windows with Credential Guard enabled and with split-irqchip, level triggered interrupts are not properly forwarded to L2 (Credential Guard) by L1 (Windows), instead L1 EOIs the interrupt. Which leads to extremely slow Windows boot time. This issue is only seen on Intel + split-irqchip. Intel + kernel-irqchip, AMD + (kernel/split)-irqchip works fine. Qemu command used to create the vm: /usr/libexec/qemu-kvm \ -machine q35,accel=kvm,smm=on,usb=off,acpi=on,kernel-irqchip=split \ -cpu host,+vmx,+invpcid,+ssse3,+aes,+xsave,+xsaveopt,+xgetbv1,+xsaves,+rdtscp,+tsc-deadline \ -m 20G -smp 1 \ -boot order=c,menu=on \ -drive if=pflash,format=raw,readonly=on,file=/usr/share/OVMF/OVMF_CODE_4MB.secboot.fd \ -drive if=pflash,format=raw,file=/var/lib/qemu/nvram/win_VARS.fd \ -chardev socket,id=chrtpm,path=/var/lib/qemu/tpm-win/sock \ -tpmdev emulator,id=tpm0,chardev=chrtpm \ -device tpm-crb,tpmdev=tpm0 \ -device ich9-usb-ehci1,id=usb \ -device ich9-usb-uhci1,masterbus=usb.0,firstport=0 \ -device ich9-usb-uhci2,masterbus=usb.0,firstport=2 \ -device ich9-usb-uhci3,masterbus=usb.0,firstport=4 \ -device usb-tablet,bus=usb.0,port=1 \ -device VGA,vgamem_mb=16 \ -device ich9-ahci,id=sata \ -drive file=/var/log/winsrv_2022_cg.qcow2,if=none,format=qcow2,id=hd0 \ -device ide-hd,drive=hd0,bus=sata.0 \ -vnc 0.0.0.0:5 \ -serial mon:stdio Note that usb controllers and usb devices generate the INTx interrupts hence are important for repro, the qcow2 is Windows Server 2022 with UEFI boot and Credential Guard. Removing kernel-irqchip=split (using kernel-irqchip) does not lead into the issue. Processor Information: Intel(R) Xeon(R) Gold 6348 CPU @ 2.60GHz Kernel Info: 6.12.26-11.0s20c78r5.el9.x86_64 (bug present) 6.17.0-11.0s20c79r5.el9.x86_64 (bug present) Config file: standard config, KVM specific config here: https://pastebin.com/skXYQeJn Qemu version: 9.1.0 We see the following turns of events with kernel-irqchip: a) A level triggered interrupt on pin 19 arrives after MMIO write from L2(CGVM) (to usb device) (not shown in above logs). b) Using kvm_nested_vmexit_inject the L2 exit reason (external interrupt) is made visible to L1. c) We see an L1 enter, which immediately invokes L2 with VMRESUME. d) L2 services the interrupt, performs MMIO write, which de-asserts the level triggered interrupt. e) Then L2 EOIs the interrupt after de-assertion -> L1 EOIs the interrupt. While for split-irqchip we see the following turn of events: a) and b) is the same. c) L1 enters and EOIs immediately, without letting L2 service the interrupt first. (Line never de-asserts) d) The interrupt gets re-inserted repeatedly -> boot crawls. [KVM Tracepoints at the bottom ] We probed the interrupt delivery path in both cases, the interrupt delivery path for both the cases is only slightly different, in the case of kernel-irqchip, `kvm_set_irq` calls `kvm_ioapic_set_irq`, while in the case of split-irqchip, `kvm_set_irq` calls `kvm_msi_set_irq`, both paths merge on `kvm_irq_delivery_to_apic`, we noticed all the args are same, we also probed path taken from there in both the cases, which is kvm_irq_delivery_to_apic → kvm_irq_delivery_to_apic_fast → kvm_apic_set_irq → __apic_accept_irq → vmx_deliver_interrupt → vmx_deliver_posted_interrupt → kvm_vcpu_trigger_posted_interrupt On split-irqchip, subsequent interrupts take different route in kvm_vcpu_trigger_posted_interrupt as interrupts are received while L1 (Windows) is running on the vcpu. We also took VMCS dumps just before kvm_enter and just after kvm_exit after the first level triggered interrupt is received, VMCS01 and VMCS12 are same just before the L1 VMENTER after the first interrupt is delivered. We observe that for both VMCS01 and VMCS12, InterruptStatus, SVI|RVI, entry/exit information, pin-based/cpu-based ctrl state are the same, yet in case of kernel-irqchip, L1 passes the interrupt to L2 with VMRESUME, and in case of split-irqchip performs EOI. [VMCS dumps at the bottom] We also checked the last MSR reads and writes on different addresses before the first level triggered interrupt, the dump is available here: https://pastebin.com/PckkM8pt, Only values we see different between kernel-irqchip and split-irqchip seems to be run to run variation. We also checked CPUID info exposed to the guest. There was only one bit change, specifically on func 40000001. A@1451335: kvm:kvm_cpuid: func 40000001 idx 0 rax 10040fb rbx 0 rcx 0 rdx 0, cpuid entry found B@1476293: kvm:kvm_cpuid: func 40000001 idx 0 rax 100c0fb rbx 0 rcx 0 rdx 0, cpuid entry found This seems to be KVM_FEATURE_MSI_EXT_DEST_ID bit, disabling KVM_FEATURE_MSI_EXT_DEST_ID does not change the behavior. [3.] Keywords: kvm,vmx,nested-virtualization,split-irqchip,windows-guest Any pointers on this will be extremely helpful thanks! Thanks, Khushit =========================================================== KVM tracepoints in the case of kernel-irqchip: CPU 0/KVM 699876 [020] 18136.763622: kvm:kvm_set_irq: gsi 19 level 1 source 0 CPU 0/KVM 699876 [020] 18136.763624: kvm:kvm_apic_accept_irq: apicid 0 vec 129 (Fixed|level) CPU 0/KVM 699876 [020] 18136.763625: kvm:kvm_apicv_accept_irq: apicid 0 vec 129 (Fixed|level) CPU 0/KVM 699876 [020] 18136.763626: kvm:kvm_ioapic_set_irq: pin 19 dst 0 vec 129 (Fixed|physical|level) CPU 0/KVM 699876 [020] 18136.763629: kvm:kvm_set_irq: gsi 11 level 0 source 0 CPU 0/KVM 699876 [020] 18136.763631: kvm:kvm_pic_set_irq: chip 1 pin 3 (edge|masked) CPU 0/KVM 699876 [020] 18136.763632: kvm:kvm_ioapic_set_irq: pin 11 dst 0 vec 255 (Fixed|physical|edge|masked) CPU 0/KVM 699876 [020] 18136.763633: kvm:kvm_set_irq: gsi 11 level 0 source 0 CPU 0/KVM 699876 [020] 18136.763634: kvm:kvm_pic_set_irq: chip 1 pin 3 (edge|masked) CPU 0/KVM 699876 [020] 18136.763634: kvm:kvm_ioapic_set_irq: pin 11 dst 0 vec 255 (Fixed|physical|edge|masked) CPU 0/KVM 699876 [020] 18136.763640: kvm:kvm_fpu: load CPU 0/KVM 699876 [020] 18136.763644: kvm:kvm_nested_vmexit_inject: reason EXTERNAL_INTERRUPT info1 0 info2 0 int_info 80000081 int_info_err 0 CPU 0/KVM 699876 [020] 18136.763647: kvm:kvm_entry: vcpu 0, rip 0xfffff8489b64142c CPU 0/KVM 699876 [020] 18136.763651: kvm:kvm_exit: reason VMRESUME rip 0xfffff8489b641308 info 0 0 CPU 0/KVM 699876 [020] 18136.763652: kvm:kvm_nested_vmenter: rip: 0xfffff8489b641308 vmcs: 0xffffffffffffffff nested_rip: 0xfffff8031964b2b6 int_ctl: 0x00000000 event_inj: 0x80000081 nested_ept=y nested_eptp: 0x00000001019a701e ————————————————————————————— L2 services the interrupt ——————————————————— CPU 0/KVM 699876 [020] 18136.763695: kvm:kvm_mmio: mmio write len 4 gpa 0x81111024 val 0x4 CPU 0/KVM 699876 [020] 18136.763696: kvm:kvm_fpu: unload CPU 0/KVM 699876 [020] 18136.763696: kvm:kvm_userspace_exit: reason KVM_EXIT_MMIO (6) CPU 0/KVM 699876 [020] 18136.763699: kvm:kvm_set_irq: gsi 19 level 0 source 0 CPU 0/KVM 699876 [020] 18136.763700: kvm:kvm_ioapic_set_irq: pin 19 dst 0 vec 129 (Fixed|physical|level) CPU 0/KVM 699876 [020] 18136.763701: kvm:kvm_set_irq: gsi 11 level 0 source 0 CPU 0/KVM 699876 [020] 18136.763701: kvm:kvm_pic_set_irq: chip 1 pin 3 (edge|masked) CPU 0/KVM 699876 [020] 18136.763702: kvm:kvm_ioapic_set_irq: pin 11 dst 0 vec 255 (Fixed|physical|edge|masked) CPU 0/KVM 699876 [020] 18136.763703: kvm:kvm_set_irq: gsi 11 level 0 source 0 CPU 0/KVM 699876 [020] 18136.763703: kvm:kvm_pic_set_irq: chip 1 pin 3 (edge|masked) CPU 0/KVM 699876 [020] 18136.763703: kvm:kvm_ioapic_set_irq: pin 11 dst 0 vec 255 (Fixed|physical|edge|masked) CPU 0/KVM 699876 [020] 18136.763705: kvm:kvm_fpu: load CPU 0/KVM 699876 [020] 18136.763705: kvm:kvm_entry: vcpu 0, rip 0xfffff8031964a708 CPU 0/KVM 699876 [020] 18136.763707: kvm:kvm_exit: reason EPT_MISCONFIG rip 0xfffff8031964a727 info 0 0 CPU 0/KVM 699876 [020] 18136.763707: kvm:kvm_nested_vmexit: CAN'T FIND FIELD "rip"<CANT FIND FIELD exit_code>vcpu 0 reason EPT_MISCONFIG rip 0xfffff8031964a727 info1 0x0000000000000000 info2 0x0000000000000000 intr_info 0x00000000 error_code 0x00000000 CPU 0/KVM 699876 [020] 18136.763709: kvm:kvm_emulate_insn: 0:fffff8031964a727: 8b 56 0c CPU 0/KVM 699876 [020] 18136.763710: kvm:vcpu_match_mmio: gva 0xffffbd0c86b8a02c gpa 0x8111102c Read GPA CPU 0/KVM 699876 [020] 18136.763710: kvm:kvm_mmio: mmio unsatisfied-read len 4 gpa 0x8111102c val 0x0 CPU 0/KVM 699876 [020] 18136.763710: kvm:kvm_fpu: unload CPU 0/KVM 699876 [020] 18136.763711: kvm:kvm_userspace_exit: reason KVM_EXIT_MMIO (6) CPU 0/KVM 699876 [020] 18136.763712: kvm:kvm_fpu: load CPU 0/KVM 699876 [020] 18136.763713: kvm:kvm_mmio: mmio read len 4 gpa 0x8111102c val 0xec0 CPU 0/KVM 699876 [020] 18136.763714: kvm:kvm_entry: vcpu 0, rip 0xfffff8031964a72a CPU 0/KVM 699876 [020] 18136.763716: kvm:kvm_exit: reason MSR_WRITE rip 0xfffff8030f62d36c info 0 0 CPU 0/KVM 699876 [020] 18136.763717: kvm:kvm_nested_vmexit: CAN'T FIND FIELD "rip"<CANT FIND FIELD exit_code>vcpu 0 reason MSR_WRITE rip 0xfffff8030f62d36c info1 0x0000000000000000 info2 0x0000000000000000 intr_info 0x00000000 error_code 0x00000000 CPU 0/KVM 699876 [020] 18136.763719: kvm:kvm_nested_vmexit_inject: reason MSR_WRITE info1 0 info2 0 int_info 0 int_info_err 0 CPU 0/KVM 699876 [020] 18136.763721: kvm:kvm_entry: vcpu 0, rip 0xfffff8489b64142c CPU 0/KVM 699876 [020] 18136.763724: kvm:kvm_exit: reason MSR_WRITE rip 0xfffff8489b732daf info 0 0 CPU 0/KVM 699876 [020] 18136.763725: kvm:kvm_apic: apic_write APIC_EOI = 0x0 CPU 0/KVM 699876 [020] 18136.763725: kvm:kvm_eoi: apicid 0 vector 129 KVM tracepoints in case of split-irqchip: CPU 0/KVM 655470 [011] 17156.779254: kvm:kvm_set_irq: gsi 19 level 1 source 0 CPU 0/KVM 655470 [011] 17156.779255: kvm:kvm_msi_set_irq: dst 0 vec 129 (Fixed|physical|level) CPU 0/KVM 655470 [011] 17156.779256: kvm:kvm_apic_accept_irq: apicid 0 vec 129 (Fixed|level) CPU 0/KVM 655470 [011] 17156.779256: kvm:kvm_apicv_accept_irq: apicid 0 vec 129 (Fixed|level) CPU 0/KVM 655470 [011] 17156.779263: kvm:kvm_fpu: load CPU 0/KVM 655470 [011] 17156.779266: kvm:kvm_nested_vmexit_inject: reason EXTERNAL_INTERRUPT info1 0 info2 0 int_info 80000081 int_info_err 0 CPU 0/KVM 655470 [011] 17156.779269: kvm:kvm_entry: vcpu 0, rip 0xfffff80653e4142c CPU 0/KVM 655470 [011] 17156.779271: kvm:kvm_exit: reason MSR_WRITE rip 0xfffff80653f32daf info 0 0 CPU 0/KVM 655470 [011] 17156.779272: kvm:kvm_apic: apic_write APIC_EOI = 0x0 CPU 0/KVM 655470 [011] 17156.779272: kvm:kvm_eoi: apicid 0 vector 129 CPU 0/KVM 655470 [011] 17156.779273: kvm:kvm_msr: msr_write 40000070 = 0x0 CPU 0/KVM 655470 [011] 17156.779274: kvm:kvm_fpu: unload CPU 0/KVM 655470 [011] 17156.779274: kvm:kvm_userspace_exit: reason KVM_EXIT_IOAPIC_EOI (26) VMCS dump for kernel-irqchip: CPU 0/KVM-251862 [019] 6384.132433: bprint: vmx_dump_01_02_12: KVM/VMX: ===== autodump (VM-ENTER) vcpu=0 ===== CPU 0/KVM-251862 [019] 6384.132433: bputs: vmx_dump_01_02_12: KVM/VMX: [CURRENT] CPU 0/KVM-251862 [019] 6384.132433: bputs: vmx_dump_01_02_12: KVM/VMC: [CURRENT] is vmc01 CPU 0/KVM-251862 [019] 6384.132433: bprint: dump_vmcs: VMCS 0xffff906388d0c000, last attempted VM-entry on CPU 19 CPU 0/KVM-251862 [019] 6384.132433: bputs: dump_vmcs: *** Guest State *** CPU 0/KVM-251862 [019] 6384.132433: bprint: dump_vmcs: CR0: actual=0x0000000080010031, shadow=0x0000000080010031, gh_mask=fffffffffffefff7 CPU 0/KVM-251862 [019] 6384.132434: bprint: dump_vmcs: CR4: actual=0x00000000000422e0, shadow=0x00000000000422e0, gh_mask=fffffffffffef871 CPU 0/KVM-251862 [019] 6384.132434: bprint: dump_vmcs: CR3 = 0x0000000101945000 CPU 0/KVM-251862 [019] 6384.132434: bprint: dump_vmcs: PDPTR0 = 0x0000000065632001 PDPTR1 = 0x0000000065631001 CPU 0/KVM-251862 [019] 6384.132434: bprint: dump_vmcs: PDPTR2 = 0x0000000065630001 PDPTR3 = 0x000000006562f001 CPU 0/KVM-251862 [019] 6384.132435: bprint: dump_vmcs: RSP = 0xffffe70000005fc0 RIP = 0xfffff8390c241308 CPU 0/KVM-251862 [019] 6384.132435: bprint: dump_vmcs: RFLAGS=0x00000002 DR7 = 0x0000000000000400 CPU 0/KVM-251862 [019] 6384.132435: bprint: vmx_dump_dtsel: GDTR: limit=0x0000ffff, base=0xfffff8390c0232b0 CPU 0/KVM-251862 [019] 6384.132435: bprint: vmx_dump_dtsel: IDTR: limit=0x0000ffff, base=0xfffff8390c0220b0 CPU 0/KVM-251862 [019] 6384.132435: bprint: vmx_dump_sel.constprop.0: TR: sel=0x0030, attr=0x0008b, limit=0x00000067, base=0xfffff8390c123320 CPU 0/KVM-251862 [019] 6384.132436: bprint: dump_vmcs: DebugCtl = 0x0000000000000000 DebugExceptions = 0x0000000000000000 CPU 0/KVM-251862 [019] 6384.132436: bprint: dump_vmcs: Interruptibility = 00000000 ActivityState = 00000000 CPU 0/KVM-251862 [019] 6384.132436: bprint: dump_vmcs: InterruptStatus = 5100 CPU 0/KVM-251862 [019] 6384.132436: bprint: vmx_dump_msrs: MSR guest autoload: CPU 0/KVM-251862 [019] 6384.132436: bprint: vmx_dump_msrs: 0: msr=0x00000600 value=0x0000000000000000 CPU 0/KVM-251862 [019] 6384.132437: bputs: dump_vmcs: *** Host State *** CPU 0/KVM-251862 [019] 6384.132437: bprint: dump_vmcs: RIP = 0xffffffffc0d89630 RSP = 0xffffb5c59424bce0 CPU 0/KVM-251862 [019] 6384.132437: bprint: dump_vmcs: GDTBase=fffffe3f5127d000 IDTBase=fffffe0000000000 CPU 0/KVM-251862 [019] 6384.132437: bprint: dump_vmcs: CR0=0000000080050033 CR3=0000000183c24001 CR4=0000000000772ef0 CPU 0/KVM-251862 [019] 6384.132437: bprint: dump_vmcs: PAT = 0x0407050600070106 CPU 0/KVM-251862 [019] 6384.132437: bprint: vmx_dump_msrs: MSR host autoload: CPU 0/KVM-251862 [019] 6384.132438: bprint: vmx_dump_msrs: 0: msr=0x00000600 value=0xfffffe3f51297000 CPU 0/KVM-251862 [019] 6384.132438: bputs: dump_vmcs: *** Control State *** CPU 0/KVM-251862 [019] 6384.132438: bprint: dump_vmcs: CPUBased=0xb5a26dfa SecondaryExec=0x821217eb TertiaryExec=0x0000000000000010 CPU 0/KVM-251862 [019] 6384.132438: bprint: dump_vmcs: PinBased=0x000000ff EntryControls=000053ff ExitControls=000befff CPU 0/KVM-251862 [019] 6384.132438: bprint: dump_vmcs: ExceptionBitmap=000600c2 PFECmask=00000000 PFECmatch=00000000 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: VMEntry: intr_info=00000000 errcode=00000000 ilen=00000000 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: VMExit: intr_info=00000000 errcode=00000000 ilen=00000003 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: reason=00000018 qualification=0000000000000000 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: IDTVectoring: info=00000000 errcode=00000000 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: TSC Offset = 0xfffff447b4a645a1 CPU 0/KVM-251862 [019] 6384.132439: bprint: dump_vmcs: TSC Multiplier = 0x0001000000000000 CPU 0/KVM-251862 [019] 6384.132440: bprint: dump_vmcs: SVI|RVI = 51|00 CPU 0/KVM-251862 [019] 6384.132440: bprint: dump_vmcs: TPR Threshold = 0x00 CPU 0/KVM-251862 [019] 6384.132440: bprint: dump_vmcs: APIC-access addr = 0x000000024ea83000 CPU 0/KVM-251862 [019] 6384.132440: bprint: dump_vmcs: virt-APIC addr = 0x00000046212ed000 CPU 0/KVM-251862 [019] 6384.132440: bprint: dump_vmcs: PostedIntrVec = 0xf2 CPU 0/KVM-251862 [019] 6384.132441: bprint: dump_vmcs: EPT pointer = 0x00000040a0db305e CPU 0/KVM-251862 [019] 6384.132441: bprint: dump_vmcs: PLE Gap=00000080 Window=00001000 CPU 0/KVM-251862 [019] 6384.132441: bprint: dump_vmcs: Virtual processor ID = 0x0011 CPU 0/KVM-251862 [019] 6384.132441: bputs: vmx_dump_01_02_12: KVM/VMX: [VMCS12] CPU 0/KVM-251862 [019] 6384.132441: bprint: vmx_dump_01_02_12: ENTRY_INTR_INFO=0xd1 ENTRY_LEN=0 EXIT_REASON=0x1 EXIT_INTR_INFO=0x80000051 EXIT_INTR_ERR=0 CPU 0/KVM-251862 [019] 6384.132442: bprint: vmx_dump_01_02_12: IDT_VEC_INFO=0 IDT_VEC_ERR=0 EXIT_LEN=0x3 VMX_INSN_INFO=0 CPU 0/KVM-251862 [019] 6384.132442: bprint: vmx_dump_01_02_12: GUEST_INTR_STATUS=0 TPR_THRESH=0 VAPIC=0x116688000 PIDESC=0 PINV=0 CPU 0/KVM-251862 [019] 6384.132442: bprint: vmx_dump_01_02_12: EOI_EXIT_BITMAPS: [0]=0 [1]=0 [2]=0 [3]=0 CPU 0/KVM-251862 [019] 6384.132442: bprint: vmx_dump_01_02_12: PINBASED=0x3f CPU_BASED=0xb6206dfa CPU_BASED2=0x1010ae VM_ENTRY_CTRL=0x13ff VM_EXIT_CTRL=0x3efff CPU 0/KVM-251862 [019] 6384.132443: bprint: vmx_dump_01_02_12: RIP=0xfffff8012b5f50c2 RSP=0xfffffc8791b29fd0 RFLAGS=0x40213 INTR_STATE=0 ACTV=0 CPU 0/KVM-251862 [019] 6384.132443: bprint: vmx_dump_01_02_12: CR0=0x80050033 CR3=0x119167000 CR4=0x352ef8 EPTP=0x1019ab01e CPU 0/KVM-251862 [019] 6384.132443: bputs: vmx_dump_01_02_12: KVM/VMX: ===================================== VMCS dump for split-irqchip, CPU 0/KVM-453395 [001] 12461.840701: bprint: vmx_dump_01_02_12: KVM/VMX: ===== autodump (VM-ENTER) vcpu=0 ===== CPU 0/KVM-453395 [001] 12461.840702: bputs: vmx_dump_01_02_12: KVM/VMX: [CURRENT] CPU 0/KVM-453395 [001] 12461.840702: bputs: vmx_dump_01_02_12: KVM/VMC: [CURRENT] is vmc01 CPU 0/KVM-453395 [001] 12461.840702: bprint: dump_vmcs: VMCS 0xffff906904c87000, last attempted VM-entry on CPU 1 CPU 0/KVM-453395 [001] 12461.840702: bputs: dump_vmcs: *** Guest State *** CPU 0/KVM-453395 [001] 12461.840702: bprint: dump_vmcs: CR0: actual=0x0000000080010031, shadow=0x0000000080010031, gh_mask=fffffffffffefff7 CPU 0/KVM-453395 [001] 12461.840702: bprint: dump_vmcs: CR4: actual=0x00000000000422e0, shadow=0x00000000000422e0, gh_mask=fffffffffffef871 CPU 0/KVM-453395 [001] 12461.840703: bprint: dump_vmcs: CR3 = 0x0000000101944000 CPU 0/KVM-453395 [001] 12461.840703: bprint: dump_vmcs: PDPTR0 = 0x0000000065632001 PDPTR1 = 0x0000000065631001 CPU 0/KVM-453395 [001] 12461.840703: bprint: dump_vmcs: PDPTR2 = 0x0000000065630001 PDPTR3 = 0x000000006562f001 CPU 0/KVM-453395 [001] 12461.840703: bprint: dump_vmcs: RSP = 0xffffe70000005fc0 RIP = 0xfffff808b8441308 CPU 0/KVM-453395 [001] 12461.840703: bprint: dump_vmcs: RFLAGS=0x00000002 DR7 = 0x0000000000000400 CPU 0/KVM-453395 [001] 12461.840704: bprint: vmx_dump_dtsel: GDTR: limit=0x0000ffff, base=0xfffff808b82232b0 CPU 0/KVM-453395 [001] 12461.840704: bprint: vmx_dump_dtsel: IDTR: limit=0x0000ffff, base=0xfffff808b82220b0 CPU 0/KVM-453395 [001] 12461.840704: bprint: vmx_dump_sel.constprop.0: TR: sel=0x0030, attr=0x0008b, limit=0x00000067, base=0xfffff808b8323320 CPU 0/KVM-453395 [001] 12461.840704: bprint: dump_vmcs: DebugCtl = 0x0000000000000000 DebugExceptions = 0x0000000000000000 CPU 0/KVM-453395 [001] 12461.840704: bprint: dump_vmcs: Interruptibility = 00000000 ActivityState = 00000000 CPU 0/KVM-453395 [001] 12461.840705: bprint: dump_vmcs: InterruptStatus = 5100 CPU 0/KVM-453395 [001] 12461.840705: bprint: vmx_dump_msrs: MSR guest autoload: CPU 0/KVM-453395 [001] 12461.840705: bprint: vmx_dump_msrs: 0: msr=0x00000600 value=0x0000000000000000 CPU 0/KVM-453395 [001] 12461.840705: bputs: dump_vmcs: *** Host State *** CPU 0/KVM-453395 [001] 12461.840705: bprint: dump_vmcs: RIP = 0xffffffffc0d89630 RSP = 0xffffb5c5a0117ce0 CPU 0/KVM-453395 [001] 12461.840705: bprint: dump_vmcs: GDTBase=fffffe5a3972e000 IDTBase=fffffe0000000000 CPU 0/KVM-453395 [001] 12461.840705: bprint: dump_vmcs: CR0=0000000080050033 CR3=0000000109cee003 CR4=0000000000772ef0 CPU 0/KVM-453395 [001] 12461.840706: bprint: dump_vmcs: PAT = 0x0407050600070106 CPU 0/KVM-453395 [001] 12461.840706: bprint: vmx_dump_msrs: MSR host autoload: CPU 0/KVM-453395 [001] 12461.840706: bprint: vmx_dump_msrs: 0: msr=0x00000600 value=0xfffffe5a39748000 CPU 0/KVM-453395 [001] 12461.840706: bputs: dump_vmcs: *** Control State *** CPU 0/KVM-453395 [001] 12461.840706: bprint: dump_vmcs: CPUBased=0xb5a26dfa SecondaryExec=0x821217eb TertiaryExec=0x0000000000000010 CPU 0/KVM-453395 [001] 12461.840706: bprint: dump_vmcs: PinBased=0x000000ff EntryControls=000053ff ExitControls=000befff CPU 0/KVM-453395 [001] 12461.840707: bprint: dump_vmcs: ExceptionBitmap=000600c2 PFECmask=00000000 PFECmatch=00000000 CPU 0/KVM-453395 [001] 12461.840707: bprint: dump_vmcs: VMEntry: intr_info=00000000 errcode=00000000 ilen=00000000 CPU 0/KVM-453395 [001] 12461.840707: bprint: dump_vmcs: VMExit: intr_info=00000000 errcode=00000000 ilen=00000003 CPU 0/KVM-453395 [001] 12461.840707: bprint: dump_vmcs: reason=00000018 qualification=0000000000000000 CPU 0/KVM-453395 [001] 12461.840708: bprint: dump_vmcs: IDTVectoring: info=00000000 errcode=00000000 CPU 0/KVM-453395 [001] 12461.840708: bprint: dump_vmcs: TSC Offset = 0xffffe9399281aa53 CPU 0/KVM-453395 [001] 12461.840708: bprint: dump_vmcs: TSC Multiplier = 0x0001000000000000 CPU 0/KVM-453395 [001] 12461.840708: bprint: dump_vmcs: SVI|RVI = 51|00 CPU 0/KVM-453395 [001] 12461.840708: bprint: dump_vmcs: TPR Threshold = 0x00 CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: APIC-access addr = 0x000000012e1ad000 CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: virt-APIC addr = 0x0000004605554000 CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: PostedIntrVec = 0xf2 CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: EPT pointer = 0x00000001bdfa805e CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: PLE Gap=00000080 Window=00001000 CPU 0/KVM-453395 [001] 12461.840709: bprint: dump_vmcs: Virtual processor ID = 0x0011 CPU 0/KVM-453395 [001] 12461.840710: bputs: vmx_dump_01_02_12: KVM/VMX: [VMCS12] CPU 0/KVM-453395 [001] 12461.840710: bprint: vmx_dump_01_02_12: ENTRY_INTR_INFO=0xd1 ENTRY_LEN=0 EXIT_REASON=0x1 EXIT_INTR_INFO=0x80000051 EXIT_INTR_ERR=0 CPU 0/KVM-453395 [001] 12461.840710: bprint: vmx_dump_01_02_12: IDT_VEC_INFO=0 IDT_VEC_ERR=0 EXIT_LEN=0x5 VMX_INSN_INFO=0 CPU 0/KVM-453395 [001] 12461.840710: bprint: vmx_dump_01_02_12: GUEST_INTR_STATUS=0 TPR_THRESH=0 VAPIC=0x116687000 PIDESC=0 PINV=0 CPU 0/KVM-453395 [001] 12461.840711: bprint: vmx_dump_01_02_12: EOI_EXIT_BITMAPS: [0]=0 [1]=0 [2]=0 [3]=0 CPU 0/KVM-453395 [001] 12461.840711: bprint: vmx_dump_01_02_12: PINBASED=0x3f CPU_BASED=0xb6206dfa CPU_BASED2=0x1010ae VM_ENTRY_CTRL=0x13ff VM_EXIT_CTRL=0x3efff CPU 0/KVM-453395 [001] 12461.840711: bprint: vmx_dump_01_02_12: RIP=0xfffff8035aff73fc RSP=0xffffc18d6b729f58 RFLAGS=0x40246 INTR_STATE=0 ACTV=0 CPU 0/KVM-453395 [001] 12461.840711: bprint: vmx_dump_01_02_12: CR0=0x80050033 CR3=0x11912e000 CR4=0x352ef8 EPTP=0x1019aa01e CPU 0/KVM-453395 [001] 12461.840711: bputs: vmx_dump_01_02_12: KVM/VMX: ===================================== The full VMCS dumps + kvm tracepoints near the first level triggered interrupt for kernel-irqchip are here: https://pastebin.com/2tnN6Xfy, and for split-irqchip are here: https://pastebin.com/K1BKZYvv