On Wed, Jul 28, 2010 at 11:32 PM, Marcelo Tosatti <mtosatti@xxxxxxxxxx> wrote: > On Wed, Jul 28, 2010 at 11:28:05PM +0300, Mohammed Gamal wrote: >> On Wed, Jul 28, 2010 at 10:55 PM, Marcelo Tosatti <mtosatti@xxxxxxxxxx> wrote: >> > On Wed, Jul 28, 2010 at 12:39:01PM +0300, Mohammed Gamal wrote: >> >> This adds a unit test for real mode emulation of the iret instruction >> >> >> >> Signed-off-by: Mohammed Gamal <m.gamal005@xxxxxxxxx> >> >> >> >> --- >> >> Changes from v1: >> >> - Added test for 16-bit iret >> >> - Added tests for returned eflags >> >> --- >> >> kvm/test/x86/realmode.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++ >> >> 1 files changed, 79 insertions(+), 0 deletions(-) >> >> >> >> diff --git a/kvm/test/x86/realmode.c b/kvm/test/x86/realmode.c >> >> index bd79348..74456c3 100644 >> >> --- a/kvm/test/x86/realmode.c >> >> +++ b/kvm/test/x86/realmode.c >> >> @@ -865,6 +865,84 @@ void test_pusha_popa() >> >> print_serial("Pusha/Popa Test2: PASS\n"); >> >> } >> >> >> >> +void test_iret() >> >> +{ >> >> + struct regs inregs = { 0 }, outregs; >> >> + >> >> + MK_INSN(iret32, "pushf\n\t" >> >> + "pushl %cs\n\t" >> >> + "call 1f\n\t" /* a near call will push eip onto the stack */ >> >> + "jmp 2f\n\t" >> >> + "1: iret\n\t" >> >> + "2:\n\t" >> >> + ); >> >> + >> >> + MK_INSN(iret16, "pushfw\n\t" >> >> + "pushw %cs\n\t" >> >> + "callw 1f\n\t" >> >> + "jmp 2f\n\t" >> >> + "1: iretw\n\t" >> >> + "2:\n\t"); >> > >> > Unless iret causes a task switch, it will not cause an exit. >> > >> > >> The test covers only the real mode case, we won't have a task switch there, no? > > No. And there is no vmexit for iret, so it does not go through the > emulator. > I'm pretty sure the iret instruction went through the emulator. I saw the instruction opcode (0xcf) being in ftrace. -- 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