<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic VMCS Pointer in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880198#M9274</link>
    <description>&lt;P&gt;I've been building a hypervisor using Intel's VMX technology. I've gotten to the point where I need to define the VMCS region. I'm pretty sure I know how to create the VMCS region, but having some difficulty understanding how to define the VMCS pointer. The Intel Developer's Manual, Volume 3B states, &lt;/P&gt;
&lt;P&gt;"&lt;FONT face="Times New Roman" size="2"&gt;Software references a specific VMCS by using the 64-bit physical address of the region; such an address is called a &lt;/FONT&gt;&lt;B&gt;&lt;FONT face="Times New Roman" size="2"&gt;VMCS pointer&lt;/FONT&gt;&lt;/B&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size="2"&gt;. VMCS pointers must be aligned on a 4-KByte boundary (bits 11:0 must be zero)."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Can someone please explain to me how a 4-Kbyte alligned pointer would be implemented in software? Thanks.&lt;/FONT&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 27 Feb 2007 01:02:01 GMT</pubDate>
    <dc:creator>hypervista</dc:creator>
    <dc:date>2007-02-27T01:02:01Z</dc:date>
    <item>
      <title>VMCS Pointer</title>
      <link>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880198#M9274</link>
      <description>&lt;P&gt;I've been building a hypervisor using Intel's VMX technology. I've gotten to the point where I need to define the VMCS region. I'm pretty sure I know how to create the VMCS region, but having some difficulty understanding how to define the VMCS pointer. The Intel Developer's Manual, Volume 3B states, &lt;/P&gt;
&lt;P&gt;"&lt;FONT face="Times New Roman" size="2"&gt;Software references a specific VMCS by using the 64-bit physical address of the region; such an address is called a &lt;/FONT&gt;&lt;B&gt;&lt;FONT face="Times New Roman" size="2"&gt;VMCS pointer&lt;/FONT&gt;&lt;/B&gt;&lt;FONT&gt;&lt;/FONT&gt;&lt;FONT face="Times New Roman" size="2"&gt;. VMCS pointers must be aligned on a 4-KByte boundary (bits 11:0 must be zero)."&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size="2"&gt;Can someone please explain to me how a 4-Kbyte alligned pointer would be implemented in software? Thanks.&lt;/FONT&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Feb 2007 01:02:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880198#M9274</guid>
      <dc:creator>hypervista</dc:creator>
      <dc:date>2007-02-27T01:02:01Z</dc:date>
    </item>
    <item>
      <title>Re: VMCS Pointer</title>
      <link>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880199#M9275</link>
      <description>&lt;P&gt;&lt;FONT face="Arial"&gt;&lt;FONT color="#000000"&gt;&lt;FONT size="2"&gt;Our engineering team recommends that you start by reviewing Chapter 3 of&lt;/FONT&gt;&lt;FONT size="2"&gt;the &lt;A href="http://developer.intel.com/design/processor/manuals/248966.pdf"&gt;Intel 64 and IA-32 Architectures Optimization Reference Manual&lt;/A&gt;. The SDM has general alignment information.With regard to your specific question, they responded:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;BLOCKQUOTE dir="ltr" style="MARGIN-RIGHT: 0px"&gt;
&lt;P&gt;&lt;FONT face="Arial"&gt;&lt;FONT size="2"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;A 4K aligned (or page aligned) pointer is one that points to a region of space and has 12 low order zeros (just like the PRM says).You should call an API that givesyou an aligned 4K page. Ifyou have no such API, thenyou need to ask for more space thanyou need, and then align within that larger space. For instance,&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt; P = malloc( 8K bytes ) // very wasteful, but needed if you do not know where your returned memory will be&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt; Q = (P + 4095) AND (0xFFFFF000) // for a 32 bit machinemask needs to be changed for a 64 bit machine&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;The pointer Q is now aligned. Note that this pseudo-code does not have the right casts to make it work correctly. However, ifyou arewriting a hypervisor from scratch that shouldnt be any barrier foryou to make it work.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class="MsoNormal"&gt;&lt;FONT face="Arial" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;&lt;FONT color="#000080"&gt;You mightalso look at Xen (&lt;/FONT&gt;&lt;A title="http://en.wikipedia.org/wiki/Xen" href="http://en.wikipedia.org/wiki/Xen"&gt;&lt;FONT color="#000080"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://en.wikipedia.org/wiki/Xen" target="_blank"&gt;http://en.wikipedia.org/wiki/Xen&lt;/A&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT color="#000080"&gt;), which is an open-source VMM.&lt;/FONT&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class="MsoNormal" dir="ltr"&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;==&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face="Arial" color="#000000" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"&gt;
&lt;P class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;Lexi S.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;IntelSoftware NetworkSupport&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;A href="http://www.intel.com/software"&gt;&lt;FONT color="#800080"&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;A href="http://www.intel.com/software" target="_blank"&gt;http://www.intel.com/software&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt; &lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;
&lt;P class="MsoNormal" style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;A href="http://www.intel.com/cd/ids/developer/asmo-na/eng/58987.htm"&gt;Contact us&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; FONT-FAMILY: Arial"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class="MsoNormal" dir="ltr"&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 01 Mar 2007 21:47:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880199#M9275</guid>
      <dc:creator>Intel_Software_Netw1</dc:creator>
      <dc:date>2007-03-01T21:47:52Z</dc:date>
    </item>
    <item>
      <title>Re: VMCS Pointer</title>
      <link>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880200#M9276</link>
      <description>Thank you Lexi. This is quite helpful!</description>
      <pubDate>Fri, 02 Mar 2007 02:13:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/VMCS-Pointer/m-p/880200#M9276</guid>
      <dc:creator>hypervista</dc:creator>
      <dc:date>2007-03-02T02:13:36Z</dc:date>
    </item>
  </channel>
</rss>

