On 03/28/2011 12:46 PM, Joerg Roedel wrote:
This patch adds code to check for IOIO intercepts on instructions decoded by the KVM instruction emulator. @@ -3926,6 +3926,10 @@ static struct __x86_intercept { [x86_intercept_iret] = PRE_EX(SVM_EXIT_IRET), [x86_intercept_icebp] = PRE_EX(SVM_EXIT_ICEBP), [x86_intercept_hlt] = POST_EX(SVM_EXIT_HLT), + [x86_intercept_in] = POST_EX(SVM_EXIT_IOIO), + [x86_intercept_ins] = POST_EX(SVM_EXIT_IOIO), + [x86_intercept_out] = POST_EX(SVM_EXIT_IOIO), + [x86_intercept_outs] = POST_EX(SVM_EXIT_IOIO), };
The spec indicates we need to check the TSS and IOPL based permissions before the intercept (vmx agrees). With the code as is, it happens afterwards.
One way to do this is to have an ExtraChecks bit in the opcode::flags. Then opcode::u.xcheck->perms() is the pre-intercept check and opcode::u.xcheck->execute() is the post-intercept execution. Should work for monitor/mwait/rdtsc(p)/rdpmc/other crap x86 throws at us.
-- error compiling committee.c: too many arguments to function -- 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