[PATCH kvm-unit-tests RFC] Revert "SVM: move guest past HLT"

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



'nmi_hlt' test returns somewhat weird result:

...
PASS: direct NMI + hlt
PASS: NMI intercept while running guest
PASS: intercepted NMI + hlt
PASS: nmi_hlt
SUMMARY: 4 tests, 1 unexpected failures

Trying to investigate where the failure is coming from I was tweaking
the code around and with tiny meaningless changes I was able to observe
 #PF, #GP, #UD and other 'interesting' results. Compiler optimization
flags also change the outcome so there's obviously a corruption somewhere.
Adding a meaningless 'nop' to the second 'asm volatile ("hlt");' in
nmi_hlt_test() saves the day so it seems we erroneously advance RIP
twice, the advancement in nmi_hlt_finished() is not needed.

The outcome, however, contradicts with the commit message in 7e7aa86f74
("SVM: move guest past HLT"). With that commit reverted, all tests seem
to pass but I'm not sure what issue the commit was trying to fix, thus
RFC.

This reverts commit 7e7aa86f7418a8343de46583977f631e55fd02ed.

Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx>
---
 x86/svm_tests.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/x86/svm_tests.c b/x86/svm_tests.c
index c1abd55646f2..977ead5235b8 100644
--- a/x86/svm_tests.c
+++ b/x86/svm_tests.c
@@ -1362,11 +1362,6 @@ static bool interrupt_finished(struct svm_test *test)
             return true;
         }
 
-        /* The guest is not woken up from HLT and RIP still points to it.  */
-        if (get_test_stage(test) == 3) {
-            vmcb->save.rip++;
-        }
-
         irq_enable();
         asm volatile ("nop");
         irq_disable();
@@ -1553,9 +1548,6 @@ static bool nmi_hlt_finished(struct svm_test *test)
             return true;
         }
 
-        /* The guest is not woken up from HLT and RIP still points to it.  */
-        vmcb->save.rip++;
-
         report(true, "NMI intercept while running guest");
         break;
 
-- 
2.25.4




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux