<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">i915_gem_request_add is just a software behavior. There could be many reasons resulting in different numbers observed between host/guest side. At least from virtualization
 p.o.v, emulation of execlist can also lead to such difference, say there are N requests captured from guest driver while that VM is not being scheduled in KVMGT at that time, later when that VM is scheduled N requests will be combined as one then sent to host
 i915.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">the only certain thing is that, every write to execlist port from guest will be trapped to KVMGT. checking numbers at points before write execlist in guest or
 after trap entry in host are not guaranteed to be same.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thanks<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Kevin<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><a name="_____replyseparator"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> intel-gvt-dev [mailto:intel-gvt-dev-bounces@lists.freedesktop.org]
<b>On Behalf Of </b>Adel Belkhiri<br>
<b>Sent:</b> Saturday, October 28, 2017 12:51 AM<br>
<b>To:</b> Tian, Kevin <kevin.tian@intel.com><br>
<b>Cc:</b> intel-gvt-dev@lists.freedesktop.org<br>
<b>Subject:</b> Re: How gpu requests are trapped by kvmgt ?<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">The number of "i915_gem_request_add" events (which indicate that a request is added to the i915 queue) in the VM is bigger than the number of the same event in the Host. The difference between the two numbers
 depends on the frequency of sending requests to the gpu inside the VM.<o:p></o:p></p>
</div>
<p class="MsoNormal">To understand this behavior, I checked the function "execlists_dequeue" (in the file intel_lrc.c) in the VM and found that whenever there are many requests in the queue, to be submitted to the gpu, KVMGT is notified just once through "execlists_context_status_change".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">Le ven. 27 oct. 2017 à 01:05, Tian, Kevin <<a href="mailto:kevin.tian@intel.com">kevin.tian@intel.com</a>> a écrit :<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Do you have more detail info where you actually add trace, and the exact number difference?
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="m_-3053489514146403245______replyseparat"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">
 Adel Belkhiri [mailto:<a href="mailto:adel.belkhiri@gmail.com" target="_blank">adel.belkhiri@gmail.com</a>]
<br>
<b>Sent:</b> Friday, October 27, 2017 7:37 AM<br>
<b>To:</b> Tian, Kevin <<a href="mailto:kevin.tian@intel.com" target="_blank">kevin.tian@intel.com</a>><br>
<b>Cc:</b> <a href="mailto:intel-gvt-dev@lists.freedesktop.org" target="_blank">intel-gvt-dev@lists.freedesktop.org</a><br>
<b>Subject:</b> Re: How gpu requests are trapped by kvmgt ?</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">Thank you for your replay,<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">What I wanted to say is that I found that the number of requests sent by the VM to the vgpu is different from the number of requests received by KVMGT. I used Ftrace to do the count. 
 I think the i915 driver of the VM sometimes combine multiple requests in just one request sent to KVMGT.
<br>
<br>
Am I wrong ? <o:p></o:p></p>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
</div>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Le mer. 25 oct. 2017 à 22:47, Tian, Kevin <<a href="mailto:kevin.tian@intel.com" target="_blank">kevin.tian@intel.com</a>> a écrit :<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">it’s decided by KVMGT. the real recipe is EPT, which is a CPU hw virtualization feature to decide which
 access in VM is trapped or not.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"> </span><o:p></o:p></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a name="m_-3053489514146403245_m_544047606673460"></a><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">
 intel-gvt-dev [mailto:<a href="mailto:intel-gvt-dev-bounces@lists.freedesktop.org" target="_blank">intel-gvt-dev-bounces@lists.freedesktop.org</a>]
<b>On Behalf Of </b>Adel Belkhiri<br>
<b>Sent:</b> Wednesday, October 25, 2017 11:06 PM<br>
<b>To:</b> <a href="mailto:intel-gvt-dev@lists.freedesktop.org" target="_blank">intel-gvt-dev@lists.freedesktop.org</a><br>
<b>Subject:</b> How gpu requests are trapped by kvmgt ?</span><o:p></o:p></p>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<div>
<div>
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">Hi everybody,<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt">I have a question about the implementation of KVMGT. According to the documentation, the virtual machine, may send some requests to the gpu directly (Pass-through) and forward some other
 requests to the KVMGT module. <br>
<br>
I read the code of KVMGT but i didn't understand how requests are being sent directly to the gpu ? and who decide which request to be directly sent to the gpu or to be trapped by kvmgt ? Is it the graphics card driver of the VM (i915) or KVMGT ?<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Thanks a lot for your help.<o:p></o:p></p>
</div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Yours.<o:p></o:p></p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</body>
</html>