From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Cihula, Joseph" Subject: RE: [RFC] fix xen_in_range() Date: Thu, 23 Apr 2009 18:26:44 -0700 Message-ID: <4F65016F6CB04E49BFFA15D4F7B798D9988CFA8C@orsmsx506.amr.corp.intel.com> References: <4F65016F6CB04E49BFFA15D4F7B798D9988CF1A3@orsmsx506.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Keir Fraser , "xen-devel@lists.xensource.com" Cc: "Cui, Dexuan" , "Wang, Shane" , "Jiang, Yunhong" , "Yang, Xiaowei" , "Ke, Liping" , "Li, Xin" List-Id: xen-devel@lists.xenproject.org > From: Keir Fraser [mailto:keir.fraser@eu.citrix.com] > Sent: Thursday, April 23, 2009 12:25 AM > > On 23/04/2009 00:53, "Cihula, Joseph" wrote: > > > Unfortunately, the frametable is only contiguous in the virtual address= space, > > so one can't simply take __pa() of its start and end. And since it is = quite > > large, iterating through each page to gets its phys addr adds a percept= ible > > delay when that check has to be done for each page of physical memory (= as is > > the case in the only caller, the VT-d routine that maps memory for dom0= ). But > > it also appears that we can't convert the phys addr arguments into thei= r virt > > addrs to compare with the contiguous frametable range because they will > > convert to the DIRECTMAP va's instead. > > The frametable is allocated in aligned 2MB chunks. So you can check at th= at > granularity rather than 4kB. That made it just a single iteration on a 2GB system, but what fn should be= used to convert the va to pa? __pa() isn't converting this correctly. Joe