|
From: Cihula, J. <jos...@in...> - 2008-10-09 18:06:35
|
> From: Jonathan M. McCune [mailto:jon...@cm...] > Sent: Thursday, October 09, 2008 10:27 AM > > Hi Joe, > > Cihula, Joseph wrote: > > It is really: > > Current values of VT-d PMR registers do not match requested > > values in SinitMleData > > > > which means that some code has already programmed the PMRs but not to > > the same values that the MLE is requesting. Because the PMRs cannot > be > > changed reliably once they are set/enabled, this is not an allowed > > condition. > > > I am successfully invoking SENTER / SEXIT and then returning control to > the legacy OS once per boot cycle. When I try to execute SENTER a > second time, the system reboots and LT.ERRORCODE is populated with the > above error. However, I cannot figure out what is wrong with my PMR > values. > > Is there a way to read the current values, so that I can see how they > are set following the first SENTER? Looking through the MLE manual and > the Sw Dev Manual Vol 2b has left me without much insight. VT-d registers are described in the VT-d spec at: http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Di rect_IO.pdf > My MLE resides at physical address 0x00c00000 and consumes less than > 0x200000 (2MB) bytes. > > TBOOT: vtd_pmr_lo_base: 0xc00000 > TBOOT: vtd_pmr_lo_size: 0x200000 > TBOOT: vtd_pmr_hi_base: 0x0 > TBOOT: vtd_pmr_hi_size: 0x0 > > I'm fairly confident that the os_sinit_data_t.vtd_pmr_* values are > being > set identically prior to both invocations of SENTER (when I print them > out, the above is what I see). If you could use the VT-d spec to read and output the PMRs before launch, that should determine if they are somehow getting changed between invocations. > > Thanks, > -Jon |