Il 22/08/2014 06:33, Valentine Sinitsyn ha scritto: > On 22.08.2014 02:31, Paolo Bonzini wrote: >> VMX used the right access size already, the tests are separate for VMX >> and SVM. > Sure. So the bug is NPT-specific? Hmm, unfortunately the test cannot reproduce the bug, at least with 3.16. It only failed due to a (somewhat unbelievable...) typo: diff --git a/x86/svm.c b/x86/svm.c index 54d804b..ca1e64e 100644 --- a/x86/svm.c +++ b/x86/svm.c @@ -87,7 +87,7 @@ static void setup_svm(void) page = alloc_page(); for (j = 0; j < 512; ++j) - page[j] = (u64)pte[(i * 514) + j] | 0x027ULL; + page[j] = (u64)pte[(i * 512) + j] | 0x027ULL; pde[i] = page; } The trace correctly points at APIC_LVR for both the guest read: qemu-system-x86-23749 [019] 6718.397998: kvm_exit: reason npf rip 0x4003ba info 100000004 fee00030 qemu-system-x86-23749 [019] 6718.397998: kvm_nested_vmexit: rip: 0x00000000004003ba reason: npf ext_inf1: 0x0000000100000004 ext_inf2: 0x00000000fee00030 ext_int: 0x00000000 ext_int_err: 0x00000000 qemu-system-x86-23749 [019] 6718.397999: kvm_page_fault: address fee00030 error_code 4 qemu-system-x86-23749 [019] 6718.398009: kvm_emulate_insn: 0:4003ba:a1 30 00 e0 fe 00 00 00 00 (prot64) qemu-system-x86-23749 [019] 6718.398013: kvm_apic: apic_read APIC_LVR = 0x1050014 qemu-system-x86-23749 [019] 6718.398014: kvm_mmio: mmio read len 4 gpa 0xfee00030 val 0x1050014 qemu-system-x86-23749 [019] 6718.398015: kvm_entry: vcpu 0 and the host read: qemu-system-x86-23749 [019] 6718.398035: kvm_entry: vcpu 0 qemu-system-x86-23749 [019] 6718.398036: kvm_exit: reason npf rip 0x4003ca info 10000000d fee00030 qemu-system-x86-23749 [019] 6718.398037: kvm_page_fault: address fee00030 error_code d qemu-system-x86-23749 [019] 6718.398039: kvm_emulate_insn: 0:4003ca:a1 30 00 e0 fe 00 00 00 00 (prot64) qemu-system-x86-23749 [019] 6718.398040: kvm_apic: apic_read APIC_LVR = 0x1050014 qemu-system-x86-23749 [019] 6718.398040: kvm_mmio: mmio read len 4 gpa 0xfee00030 val 0x1050014 The different error codes are because the first read will install the shadow page. If I change the test to do two reads, the error codes match. I will look at this more closely tomorrow. Paolo -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html