<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.28.3">
</HEAD>
<BODY>
Hi List, <BR>
<BR>
I prepared some notes for CR3 involvement in different IO<BR>
operations, so here are the notes<BR>
<BR>
-        memory-mapped IO &amp; DMA IO:        <BR>
        -        Each such operation involves MOV to/from CR3 :<BR>
        -        MOV from CR3 causes &quot;Unconditional VM exit&quot;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -        MOV to CR3 causes &quot;Conditional VM exit&quot; :<BR>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -        The MOV to CR3 instruction causes a VM exit unless the value of its<BR>
                        source operand is equal to one of the CR3-target values specified in <BR>
                        the VMCS (controlled by Hypervisor). This feature allows a guest kernel to <BR>
                        change the CR3 value without causing a world switch to the hypervisor,<BR>
                        provided that the value written into the CR3 register was previously <BR>
                        specified by the hypervisor in the CR3-Target registers. An execution <BR>
                        of MOV to CR3 in VMX non-root operation does not cause a VM exit if <BR>
                        its source operand matches one of these previsously stored values. <BR>
                        If the CR3-target count is n, only the first n (0 .. (n-1)) CR3-target <BR>
                        values do not cause VM-Exit. nth value causes VM-Exit. if n=0 , <BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MOV to CR3 always causes VM-Exit.<BR>
<BR>
Please comment if I understood something incorrectly here.<BR>
<BR>
Regards,<BR>
K Arun Kumar 
</BODY>
</HTML>