kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* nVMX: Shadowing of CPU_BASED_VM_EXEC_CONTROL broken
@ 2014-10-08  8:29 Jan Kiszka
  2014-10-08  8:47 ` Paolo Bonzini
  2014-10-08  9:25 ` Wanpeng Li
  0 siblings, 2 replies; 13+ messages in thread
From: Jan Kiszka @ 2014-10-08  8:29 UTC (permalink / raw)
  To: kvm, Paolo Bonzini, Bandan Das

Hi all,

after migrating a Jailhouse VM to a newer host platform with shadow VMCS
support I found a bug. As you may know, Jailhouse doesn't intercept
interrupts, thus also never requests an interrupt window. Nevertheless:

 qemu-system-x86-5777  [001] 74970.625324: kvm_mmio:             mmio write len 4 gpa 0xfebf5008 val 0x20 qemu-system-x86-5777  [001] 74970.625325: kvm_userspace_exit:   reason KVM_EXIT_MMIO (6)
 qemu-system-x86-5777  [001] 74970.625330: kvm_entry:            vcpu 1
 qemu-system-x86-5777  [001] 74970.625333: kvm_exit:             reason PENDING_INTERRUPT rip 0xffffffff81043e54 info 0 0
 qemu-system-x86-5777  [001] 74970.625333: kvm_nested_vmexit:    rip: 0xffffffff81043e54 reason: PENDING_INTERRUPT ext_inf1: 0x0000000000000000 ext_inf2: 0x0000000000000000 ext_int: 0x00000000 ext_int_err: 0x00000000
 qemu-system-x86-5777  [001] 74970.625334: kvm_nested_vmexit_inject: reason: PENDING_INTERRUPT ext_inf1: 0x0000000000000000 ext_inf2: 0x0000000000000000 ext_int: 0x00000000 ext_int_err: 0x00000000
 qemu-system-x86-5777  [001] 74970.625339: kvm_entry:            vcpu 1
 qemu-system-x86-5777  [001] 74970.625341: kvm_exit:             reason EPT_MISCONFIG rip 0xfffffffff0002307 info 0 0
 qemu-system-x86-5777  [001] 74970.625343: kvm_emulate_insn:     0:fffffffff0002307:8b 40 20 (prot64)

And then Jailhouse crashes (which is also interesting to understand why
- L1 host state is corrupt). Anyway, the point is that we leak
CPU_BASED_VIRTUAL_INTR_PENDING from L0 into vmcs12. L0 sets it before
entering L2, and then we transfer it from the hardware state to vmc12 on
exit because that VMCS field is shadowed. The crash disappears when
disabling VMCS shadowing.

Can we simply stop shadowing CPU_BASED_VM_EXEC_CONTROL when
CPU_BASED_VIRTUAL_INTR_PENDING is injected to L2?

Jan

-- 
Siemens AG, Corporate Technology, CT RTC ITP SES-DE
Corporate Competence Center Embedded Linux

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2014-10-09  0:18 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-08  8:29 nVMX: Shadowing of CPU_BASED_VM_EXEC_CONTROL broken Jan Kiszka
2014-10-08  8:47 ` Paolo Bonzini
2014-10-08  8:54   ` Jan Kiszka
2014-10-08  9:25 ` Wanpeng Li
2014-10-08  9:51   ` Jan Kiszka
2014-10-08 10:20     ` Paolo Bonzini
2014-10-08 10:29       ` Jan Kiszka
2014-10-08 10:34         ` Paolo Bonzini
2014-10-08 15:07           ` Jan Kiszka
2014-10-08 15:44             ` Paolo Bonzini
2014-10-08 16:07               ` Jan Kiszka
2014-10-08 23:34             ` Wanpeng Li
2014-10-08 23:58               ` Wanpeng Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).