From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang2 Subject: Re: [PATCH] amd iommu: Do not adjust paging mode for dom0 devices Date: Mon, 7 Feb 2011 10:58:28 +0100 Message-ID: <201102071058.29383.wei.wang2@amd.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Content-Disposition: inline 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 Cc: "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org On Sunday 06 February 2011 17:58:18 Keir Fraser wrote: > On 01/02/2011 17:34, "Wei Wang2" wrote: > > Keir > > Here is another small patch to fix consistency issue of paging mode when > > return passthru devices back to dom0. In this case, paging mode should > > not be adjusted, since dom0->max_pages = ~0U. > > The call to get_paging_mode() in amd_iommu_domain_init() looks sensible > enough. Why is a call needed in reassign_device() at all? Checking for dom0 > in reassign_device just looks like a fragile hack. > > -- Keir Keir, amd_iommu_domain_init() is called very early, where get_paging_mode() cannot use domU->max_pages to setup proper io page level for domU. Instead, paging mode of domU has to be initialized as 4 for safety. That is why I want to adjust hd->paging_mode in reassign_device() using domU->max_pages. Since most domU use 2-3 level page tables, always using 4 level might be a waste. But I had a wrong assumption of dom0->max_pages, and consequently when return passthru device back to dom0, following lines in c/s 22825 + if ( target->max_pages > 0 ) + t->paging_mode = get_paging_mode(target->max_pages); will change hd->paging_mode of dom0 from 3 (in most case) to 4 (using get_paging_mode(dom0->max_pages)). Thanks, -Wei