direct-io.hg

changeset 7364:48f542f8d906

Currently, we mark an IO request to STATE_IOREQ_READY state before
calling IO handlers in xen HV, i.e. vmx_portio_intercept or
vmx_mmio_intercept. Actually, STATE_IOREQ_READY means it's ready for
DM handling, only if IO handlers in xen HV won't handle it, it should
be passed to DM. This patch fixes this issue.

Signed-off-by: Yunhong Jiang <yunhong.jiang@intel.com>
Signed-off-by: Xin Li <xin.b.li@intel.com>
Signed-off-by: Nakajima Jun <nakajima.jun@intel.com>
author kaf24@firebug.cl.cam.ac.uk
date Thu Oct 13 08:06:27 2005 +0100 (2005-10-13)
parents 40b4860f554a
children 9e373ffff3e6
files xen/arch/x86/vmx.c xen/arch/x86/vmx_platform.c
line diff
     1.1 --- a/xen/arch/x86/vmx.c	Wed Oct 12 21:10:14 2005 +0100
     1.2 +++ b/xen/arch/x86/vmx.c	Thu Oct 13 08:06:27 2005 +0100
     1.3 @@ -646,14 +646,14 @@ void send_pio_req(struct cpu_user_regs *
     1.4      } else
     1.5          p->u.data = value;
     1.6  
     1.7 -    p->state = STATE_IOREQ_READY;
     1.8 -
     1.9      if (vmx_portio_intercept(p)) {
    1.10          /* no blocking & no evtchn notification */
    1.11          clear_bit(ARCH_VMX_IO_WAIT, &v->arch.arch_vmx.flags);
    1.12          return;
    1.13      }
    1.14  
    1.15 +    p->state = STATE_IOREQ_READY;
    1.16 +
    1.17      evtchn_send(iopacket_port(v->domain));
    1.18      vmx_wait_io();
    1.19  }
     2.1 --- a/xen/arch/x86/vmx_platform.c	Wed Oct 12 21:10:14 2005 +0100
     2.2 +++ b/xen/arch/x86/vmx_platform.c	Thu Oct 13 08:06:27 2005 +0100
     2.3 @@ -643,14 +643,14 @@ void send_mmio_req(unsigned char type, u
     2.4      } else
     2.5          p->u.data = value;
     2.6  
     2.7 -    p->state = STATE_IOREQ_READY;
     2.8 -
     2.9      if (vmx_mmio_intercept(p)){
    2.10          p->state = STATE_IORESP_READY;
    2.11          vmx_io_assist(v);
    2.12          return;
    2.13      }
    2.14  
    2.15 +    p->state = STATE_IOREQ_READY;
    2.16 +
    2.17      evtchn_send(iopacket_port(v->domain));
    2.18      vmx_wait_io();
    2.19  }