vmlinux.clang: file format elf64-x86-64 Disassembly of section .text: ffffffff811b7850 : handle_external_interrupt_irqoff(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6230 kvm_after_interrupt(&vmx->vcpu); } } static void handle_external_interrupt_irqoff(struct kvm_vcpu *vcpu) { ffffffff811b7850: 55 push %rbp ffffffff811b7851: 41 57 push %r15 ffffffff811b7853: 41 56 push %r14 ffffffff811b7855: 41 55 push %r13 ffffffff811b7857: 41 54 push %r12 ffffffff811b7859: 53 push %rbx ffffffff811b785a: 48 83 ec 10 sub $0x10,%rsp ffffffff811b785e: 49 89 fe mov %rdi,%r14 ffffffff811b7861: e8 6a 06 56 00 callq ffffffff81717ed0 <__sanitizer_cov_trace_pc> ffffffff811b7866: 31 db xor %ebx,%ebx arch_static_branch(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6230 ffffffff811b7868: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1) vmcs_read32(): /usr/local/google/src/linux-trunk/./arch/x86/include/asm/jump_label.h:25 #include #include static __always_inline bool arch_static_branch(struct static_key *key, bool branch) { asm_volatile_goto("1:" ffffffff811b786d: e8 5e 06 56 00 callq ffffffff81717ed0 <__sanitizer_cov_trace_pc> ffffffff811b7872: b8 04 44 00 00 mov $0x4404,%eax __vmcs_readl(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/ops.h:70 static __always_inline unsigned long __vmcs_readl(unsigned long field) { unsigned long value; asm volatile("1: vmread %2, %1\n\t" ffffffff811b7877: 0f 78 c3 vmread %rax,%rbx ffffffff811b787a: 3e 77 0d ja,pt ffffffff811b788a ffffffff811b787d: 48 89 c7 mov %rax,%rdi ffffffff811b7880: 48 31 f6 xor %rsi,%rsi ffffffff811b7883: e8 d8 2f ff ff callq ffffffff811aa860 ffffffff811b7888: 31 db xor %ebx,%ebx is_external_intr(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmcs.h:129 == (INTR_TYPE_NMI_INTR | INTR_INFO_VALID_MASK); } static inline bool is_external_intr(u32 intr_info) { return (intr_info & (INTR_INFO_VALID_MASK | INTR_INFO_INTR_TYPE_MASK)) ffffffff811b788a: 89 dd mov %ebx,%ebp ffffffff811b788c: 81 e5 00 07 00 80 and $0x80000700,%ebp /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmcs.h:130 == (INTR_INFO_VALID_MASK | INTR_TYPE_EXT_INTR); ffffffff811b7892: bf 00 00 00 80 mov $0x80000000,%edi ffffffff811b7897: 89 ee mov %ebp,%esi ffffffff811b7899: e8 d2 09 56 00 callq ffffffff81718270 <__sanitizer_cov_trace_const_cmp4> ffffffff811b789e: 81 fd 00 00 00 80 cmp $0x80000000,%ebp handle_external_interrupt_irqoff(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6240 #endif gate_desc *desc; u32 intr_info; intr_info = vmcs_read32(VM_EXIT_INTR_INFO); if (WARN_ONCE(!is_external_intr(intr_info), ffffffff811b78a4: 0f 85 14 01 00 00 jne ffffffff811b79be ffffffff811b78aa: 49 bc 00 00 00 00 00 movabs $0xdffffc0000000000,%r12 ffffffff811b78b1: fc ff df /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6244 "KVM: unexpected VM-Exit interrupt info: 0x%x", intr_info)) return; vector = intr_info & INTR_INFO_VECTOR_MASK; ffffffff811b78b4: e8 17 06 56 00 callq ffffffff81717ed0 <__sanitizer_cov_trace_pc> ffffffff811b78b9: 0f b6 eb movzbl %bl,%ebp /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6245 desc = (gate_desc *)host_idt_base + vector; ffffffff811b78bc: 48 8b 1d 7d e3 2a 09 mov 0x92ae37d(%rip),%rbx # ffffffff8a465c40 gate_offset(): /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:93 typedef struct gate_struct gate_desc; static inline unsigned long gate_offset(const gate_desc *g) { #ifdef CONFIG_X86_64 return g->offset_low | ((unsigned long)g->offset_middle << 16) | ffffffff811b78c3: 48 c1 e5 04 shl $0x4,%rbp ffffffff811b78c7: 4c 8d 2c 2b lea (%rbx,%rbp,1),%r13 ffffffff811b78cb: 4c 8d 7c 2b 01 lea 0x1(%rbx,%rbp,1),%r15 ffffffff811b78d0: 4c 89 e8 mov %r13,%rax ffffffff811b78d3: 48 c1 e8 03 shr $0x3,%rax ffffffff811b78d7: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b78db: 84 c0 test %al,%al ffffffff811b78dd: 0f 85 18 01 00 00 jne ffffffff811b79fb ffffffff811b78e3: 4c 89 f8 mov %r15,%rax ffffffff811b78e6: 48 c1 e8 03 shr $0x3,%rax ffffffff811b78ea: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b78ee: 84 c0 test %al,%al ffffffff811b78f0: 0f 85 25 01 00 00 jne ffffffff811b7a1b ffffffff811b78f6: 41 0f b7 55 00 movzwl 0x0(%r13),%edx ffffffff811b78fb: 4c 8d 6c 2b 06 lea 0x6(%rbx,%rbp,1),%r13 ffffffff811b7900: 4c 8d 7c 2b 07 lea 0x7(%rbx,%rbp,1),%r15 ffffffff811b7905: 4c 89 e8 mov %r13,%rax ffffffff811b7908: 48 c1 e8 03 shr $0x3,%rax ffffffff811b790c: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b7910: 84 c0 test %al,%al ffffffff811b7912: 0f 85 23 01 00 00 jne ffffffff811b7a3b ffffffff811b7918: 4c 89 34 24 mov %r14,(%rsp) ffffffff811b791c: 4c 89 f8 mov %r15,%rax ffffffff811b791f: 48 c1 e8 03 shr $0x3,%rax ffffffff811b7923: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b7927: 84 c0 test %al,%al ffffffff811b7929: 0f 85 34 01 00 00 jne ffffffff811b7a63 ffffffff811b792f: 45 0f b7 75 00 movzwl 0x0(%r13),%r14d ffffffff811b7934: 49 c1 e6 10 shl $0x10,%r14 /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:94 ((unsigned long) g->offset_high << 32); ffffffff811b7938: 4c 8d 6c 2b 08 lea 0x8(%rbx,%rbp,1),%r13 ffffffff811b793d: 4c 8d 7c 2b 0b lea 0xb(%rbx,%rbp,1),%r15 ffffffff811b7942: 4c 89 e8 mov %r13,%rax ffffffff811b7945: 48 c1 e8 03 shr $0x3,%rax ffffffff811b7949: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b794d: 84 c0 test %al,%al ffffffff811b794f: 0f 85 34 01 00 00 jne ffffffff811b7a89 ffffffff811b7955: 49 09 d6 or %rdx,%r14 ffffffff811b7958: 4c 89 f8 mov %r15,%rax ffffffff811b795b: 48 c1 e8 03 shr $0x3,%rax ffffffff811b795f: 42 8a 04 20 mov (%rax,%r12,1),%al ffffffff811b7963: 84 c0 test %al,%al ffffffff811b7965: 0f 85 44 01 00 00 jne ffffffff811b7aaf ffffffff811b796b: 41 8b 45 00 mov 0x0(%r13),%eax ffffffff811b796f: 48 c1 e0 20 shl $0x20,%rax /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:93 return g->offset_low | ((unsigned long)g->offset_middle << 16) | ffffffff811b7973: 49 09 c6 or %rax,%r14 kvm_before_interrupt(): /usr/local/google/src/linux-trunk/arch/x86/kvm/x86.h:352 DECLARE_PER_CPU(struct kvm_vcpu *, current_vcpu); static inline void kvm_before_interrupt(struct kvm_vcpu *vcpu) { __this_cpu_write(current_vcpu, vcpu); ffffffff811b7976: 48 c7 c7 d8 93 84 88 mov $0xffffffff888493d8,%rdi ffffffff811b797d: e8 ce f3 69 02 callq ffffffff83856d50 <__this_cpu_preempt_check> ffffffff811b7982: 48 8b 04 24 mov (%rsp),%rax ffffffff811b7986: 65 48 89 05 2a 67 e6 mov %rax,%gs:0x7ee6672a(%rip) # 1e0b8 ffffffff811b798d: 7e handle_external_interrupt_irqoff(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6250 entry = gate_offset(desc); kvm_before_interrupt(vcpu); asm volatile( ffffffff811b798e: 4c 89 74 24 08 mov %r14,0x8(%rsp) ffffffff811b7993: 48 89 e0 mov %rsp,%rax ffffffff811b7996: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp ffffffff811b799a: 6a 18 pushq $0x18 ffffffff811b799c: 50 push %rax ffffffff811b799d: 9c pushfq ffffffff811b799e: 6a 10 pushq $0x10 ffffffff811b79a0: ff 54 24 08 callq *0x8(%rsp) kvm_after_interrupt(): /usr/local/google/src/linux-trunk/arch/x86/kvm/x86.h:357 } static inline void kvm_after_interrupt(struct kvm_vcpu *vcpu) { __this_cpu_write(current_vcpu, NULL); ffffffff811b79a4: 48 c7 c7 d8 93 84 88 mov $0xffffffff888493d8,%rdi ffffffff811b79ab: e8 a0 f3 69 02 callq ffffffff83856d50 <__this_cpu_preempt_check> ffffffff811b79b0: 65 48 c7 05 fc 66 e6 movq $0x0,%gs:0x7ee666fc(%rip) # 1e0b8 ffffffff811b79b7: 7e 00 00 00 00 ffffffff811b79bc: eb 0e jmp ffffffff811b79cc handle_external_interrupt_irqoff(): /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6240 if (WARN_ONCE(!is_external_intr(intr_info), ffffffff811b79be: 80 3d 80 3a e4 07 01 cmpb $0x1,0x7e43a80(%rip) # ffffffff88ffb445 ffffffff811b79c5: 75 14 jne ffffffff811b79db ffffffff811b79c7: e8 04 05 56 00 callq ffffffff81717ed0 <__sanitizer_cov_trace_pc> /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6272 [ss]"i"(__KERNEL_DS), [cs]"i"(__KERNEL_CS) ); kvm_after_interrupt(vcpu); } ffffffff811b79cc: 48 83 c4 10 add $0x10,%rsp ffffffff811b79d0: 5b pop %rbx ffffffff811b79d1: 41 5c pop %r12 ffffffff811b79d3: 41 5d pop %r13 ffffffff811b79d5: 41 5e pop %r14 ffffffff811b79d7: 41 5f pop %r15 ffffffff811b79d9: 5d pop %rbp ffffffff811b79da: c3 retq /usr/local/google/src/linux-trunk/arch/x86/kvm/vmx/vmx.c:6240 if (WARN_ONCE(!is_external_intr(intr_info), ffffffff811b79db: e8 f0 04 56 00 callq ffffffff81717ed0 <__sanitizer_cov_trace_pc> ffffffff811b79e0: c6 05 5e 3a e4 07 01 movb $0x1,0x7e43a5e(%rip) # ffffffff88ffb445 ffffffff811b79e7: 48 c7 c7 47 88 7b 88 mov $0xffffffff887b8847,%rdi ffffffff811b79ee: 89 de mov %ebx,%esi ffffffff811b79f0: 31 c0 xor %eax,%eax ffffffff811b79f2: e8 e9 76 29 00 callq ffffffff8144f0e0 <__warn_printk> ffffffff811b79f7: 0f 0b ud2 ffffffff811b79f9: eb d1 jmp ffffffff811b79cc gate_offset(): /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:93 ffffffff811b79fb: 44 89 e9 mov %r13d,%ecx ffffffff811b79fe: 80 e1 07 and $0x7,%cl ffffffff811b7a01: 38 c1 cmp %al,%cl ffffffff811b7a03: 0f 8c da fe ff ff jl ffffffff811b78e3 ffffffff811b7a09: be 02 00 00 00 mov $0x2,%esi ffffffff811b7a0e: 4c 89 ef mov %r13,%rdi ffffffff811b7a11: e8 aa 8f 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7a16: e9 c8 fe ff ff jmpq ffffffff811b78e3 ffffffff811b7a1b: 44 89 f9 mov %r15d,%ecx ffffffff811b7a1e: 80 e1 07 and $0x7,%cl ffffffff811b7a21: 38 c1 cmp %al,%cl ffffffff811b7a23: 0f 8c cd fe ff ff jl ffffffff811b78f6 ffffffff811b7a29: be 02 00 00 00 mov $0x2,%esi ffffffff811b7a2e: 4c 89 ff mov %r15,%rdi ffffffff811b7a31: e8 8a 8f 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7a36: e9 bb fe ff ff jmpq ffffffff811b78f6 ffffffff811b7a3b: 44 89 e9 mov %r13d,%ecx ffffffff811b7a3e: 80 e1 07 and $0x7,%cl ffffffff811b7a41: 38 c1 cmp %al,%cl ffffffff811b7a43: 0f 8c cf fe ff ff jl ffffffff811b7918 ffffffff811b7a49: be 02 00 00 00 mov $0x2,%esi ffffffff811b7a4e: 4c 89 ef mov %r13,%rdi ffffffff811b7a51: 48 89 14 24 mov %rdx,(%rsp) ffffffff811b7a55: e8 66 8f 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7a5a: 48 8b 14 24 mov (%rsp),%rdx ffffffff811b7a5e: e9 b5 fe ff ff jmpq ffffffff811b7918 ffffffff811b7a63: 44 89 f9 mov %r15d,%ecx ffffffff811b7a66: 80 e1 07 and $0x7,%cl ffffffff811b7a69: 38 c1 cmp %al,%cl ffffffff811b7a6b: 0f 8c be fe ff ff jl ffffffff811b792f ffffffff811b7a71: be 02 00 00 00 mov $0x2,%esi ffffffff811b7a76: 4c 89 ff mov %r15,%rdi ffffffff811b7a79: 49 89 d6 mov %rdx,%r14 ffffffff811b7a7c: e8 3f 8f 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7a81: 4c 89 f2 mov %r14,%rdx ffffffff811b7a84: e9 a6 fe ff ff jmpq ffffffff811b792f /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:94 ((unsigned long) g->offset_high << 32); ffffffff811b7a89: 44 89 e9 mov %r13d,%ecx ffffffff811b7a8c: 80 e1 07 and $0x7,%cl ffffffff811b7a8f: 38 c1 cmp %al,%cl ffffffff811b7a91: 0f 8c be fe ff ff jl ffffffff811b7955 ffffffff811b7a97: be 04 00 00 00 mov $0x4,%esi ffffffff811b7a9c: 4c 89 ef mov %r13,%rdi ffffffff811b7a9f: 48 89 d3 mov %rdx,%rbx ffffffff811b7aa2: e8 19 8f 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7aa7: 48 89 da mov %rbx,%rdx ffffffff811b7aaa: e9 a6 fe ff ff jmpq ffffffff811b7955 ffffffff811b7aaf: 44 89 f9 mov %r15d,%ecx ffffffff811b7ab2: 80 e1 07 and $0x7,%cl ffffffff811b7ab5: 38 c1 cmp %al,%cl ffffffff811b7ab7: 0f 8c ae fe ff ff jl ffffffff811b796b ffffffff811b7abd: be 04 00 00 00 mov $0x4,%esi ffffffff811b7ac2: 4c 89 ff mov %r15,%rdi ffffffff811b7ac5: e8 f6 8e 8f 00 callq ffffffff81ab09c0 <__asan_report_load_n_noabort> ffffffff811b7aca: e9 9c fe ff ff jmpq ffffffff811b796b handle_external_interrupt_irqoff(): /usr/local/google/src/linux-trunk/./arch/x86/include/asm/desc_defs.h:94 ffffffff811b7acf: 90 nop