[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 2/2] x86/hvm: Corrections to RDTSCP intercept handling
> From: Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx] > Sent: Saturday, December 1, 2018 1:07 AM > > For both VT-x and SVM, the RDTSCP intercept will trigger if the pipeline > supports the instruction, but the guest may have not have rdtscp in its > featureset. Bring the vmexit handlers in line with the main emulator > behaviour by optionally handing back #UD. > > Next on the AMD side, if RDTSCP actually ends up being intercepted on a > debug > build, we first update regs->rcx, then call __get_instruction_length() asking > for RDTSC. As the two instructions are different (and indeed, different > lengths!), __get_instruction_length_from_list() fails and hands back a #GP > fault. > > This can demonstrated by putting a guest into tsc_mode="always emulate" > and > executing an rdtscp instruction: > > (d1) --- Xen Test Framework --- > (d1) Environment: HVM 64bit (Long mode 4 levels) > (d1) Test rdtscp > (d1) TSC mode 1 > (XEN) emulate.c:159:d1v0 __get_instruction_length_from_list: Mismatch > between expected and actual instruction: > (XEN) emulate.c:163:d1v0 list[0] val 8, { opc 0xf0031, modrm 0 }, list > entries: 1 > (XEN) emulate.c:165:d1v0 rip 0x10475f, nextrip 0x104762, len 3 > (XEN) Insn_len emulation failed (1): d1v0 64bit @ 0008:0010475f -> 0f 01 > f9 5b 31 ff 31 c0 e9 c4 db ff ff 00 00 00 > (d1) ****************************** > (d1) PANIC: Unhandled exception at 0008:000000000010475f > (d1) Vec 13 #GP[0000] > (d1) ****************************** > > First, teach __get_instruction_length() to cope with RDTSCP, and improve > svm_vmexit_do_rdtsc() to ask for the correct instruction. Move the regs- > >rcx > adjustment into this function to ensure it gets done after we are done > potentially raising faults. > > Reported-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx> _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |