From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Wang2 Subject: Re: [PATCH] AMD IOMMU: Hanlde sibling device assignment correctly Date: Wed, 07 May 2008 12:17:44 +0200 Message-ID: <1210155464.2841.109.camel@gran.amd.com> References: Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: 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 Wed, 2008-05-07 at 10:53 +0100, Keir Fraser wrote: > > > On 7/5/08 10:27, "Wei Wang2" wrote: > > > Devices on AMD IOMMU system share a same set of IO page tables if they > > are indexed by a same device ID in device table. To prevent these > > sibling devices from being assigned to different domains, a successful > > device assignment requires all sibling devices are owned by either > > pciback or the target domain. This is a trial patch with minor > > modifications in the common interface to handle this situation > > correctly. VTD code has also been slightly touched please let me know > > if it breaks any VTD functionality. Thanks! > > This patch seems to do more than you suggest, for example adding an extra > iommu hook into setup.c for dom0. My idea is to let dom0 construct pci device list according to configuration of pciback.hide=(). If a device is not hidden from dom0, it might be in use by dom0, then it could be dangerous to assign any of its siblings to other passthru domain. It is not very clean to hook into setup.c but I failed to find any better way to this :( > Also it does get_domain_by_id() with no > corresponding put_domain(). And in fact you should be able to > rcu_lock_domain_by_id()/rcu_unlock_domain() instead which is faster. Thanks, I will update that. > -- Keir > >