On 23/06/20 10:27, Vitaly Kuznetsov wrote: > '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. Hmm it's possible that the commit was working around something bad in nested SVM in the middle of the development. I cannot see the unexpected failure, but reverting the patch does not seem to have any ill effect. I pushed the patch, thanks. Paolo