# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1205935682 0
# Node ID ba3356c823176e172132141c8594d1ab015e001f
# Parent f45aa9a14db425d1f726fb1368a8932263de68da
x86_emulate: Remove the CPL and IOPL check in the I/O handling code.
The check is already carried out by the processor during VMEXIT, where
that is required.
Signed-off-by: Xu Dongxiao <dongxiao.xu@xxxxxxxxx>
---
xen/arch/x86/x86_emulate.c | 3 ---
1 files changed, 3 deletions(-)
diff -r f45aa9a14db4 -r ba3356c82317 xen/arch/x86/x86_emulate.c
--- a/xen/arch/x86/x86_emulate.c Wed Mar 19 14:06:18 2008 +0000
+++ b/xen/arch/x86/x86_emulate.c Wed Mar 19 14:08:02 2008 +0000
@@ -2265,7 +2265,6 @@ x86_emulate(
case 0x6c ... 0x6d: /* ins %dx,%es:%edi */ {
unsigned long nr_reps = get_rep_prefix();
- generate_exception_if(!mode_iopl(), EXC_GP, 0);
dst.bytes = !(b & 1) ? 1 : (op_bytes == 8) ? 4 : op_bytes;
dst.mem.seg = x86_seg_es;
dst.mem.off = truncate_ea(_regs.edi);
@@ -2295,7 +2294,6 @@ x86_emulate(
case 0x6e ... 0x6f: /* outs %esi,%dx */ {
unsigned long nr_reps = get_rep_prefix();
- generate_exception_if(!mode_iopl(), EXC_GP, 0);
dst.bytes = !(b & 1) ? 1 : (op_bytes == 8) ? 4 : op_bytes;
if ( (nr_reps > 1) && (ops->rep_outs != NULL) &&
((rc = ops->rep_outs(ea.mem.seg, truncate_ea(_regs.esi),
@@ -2832,7 +2830,6 @@ x86_emulate(
unsigned int port = ((b < 0xe8)
? insn_fetch_type(uint8_t)
: (uint16_t)_regs.edx);
- generate_exception_if(!mode_iopl(), EXC_GP, 0);
op_bytes = !(b & 1) ? 1 : (op_bytes == 8) ? 4 : op_bytes;
if ( b & 2 )
{
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|