[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] VT-d: drop ownership checking from domain_context_mapping_one()
commit a680b8134b2d1828bbbf443a97feea66e8a85c75 Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Tue Apr 5 14:17:21 2022 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Tue Apr 5 14:17:21 2022 +0200 VT-d: drop ownership checking from domain_context_mapping_one() Despite putting in quite a bit of effort it was not possible to establish why exactly this code exists (beyond possibly sanity checking). Instead of a subsequent change further complicating this logic, simply get rid of it. Take the opportunity and move the respective unmap_vtd_domain_page() out of the locked region. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> Reviewed-by: Paul Durrant <paul@xxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx> --- xen/drivers/passthrough/vtd/iommu.c | 61 ++----------------------------------- 1 file changed, 2 insertions(+), 59 deletions(-) diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c index 0e90089c9b..b1eeba377e 100644 --- a/xen/drivers/passthrough/vtd/iommu.c +++ b/xen/drivers/passthrough/vtd/iommu.c @@ -142,28 +142,6 @@ static int context_set_domain_id(struct context_entry *context, return 0; } -static int context_get_domain_id(const struct context_entry *context, - const struct vtd_iommu *iommu) -{ - int domid = -1; - - if ( iommu && context ) - { - unsigned int dom_index = context_domain_id(*context); - - domid = did_to_domain_id(iommu, dom_index); - if ( domid == DOMID_INVALID ) - { - dprintk(XENLOG_DEBUG VTDPREFIX, - "no domid for did %u (nr_dom %u)\n", - dom_index, cap_ndoms(iommu->cap)); - domid = -1; - } - } - - return domid; -} - static void cleanup_domid_map(struct domain *domain, struct vtd_iommu *iommu) { int iommu_domid; @@ -1410,44 +1388,9 @@ int domain_context_mapping_one( if ( context_present(*context) ) { - int res = 0; - - /* Try to get domain ownership from device structure. If that's - * not available, try to read it from the context itself. */ - if ( pdev ) - { - if ( pdev->domain != domain ) - { - printk(XENLOG_G_INFO VTDPREFIX "%pd: %pp owned by %pd", - domain, &PCI_SBDF3(seg, bus, devfn), - pdev->domain); - res = -EINVAL; - } - } - else - { - int cdomain; - cdomain = context_get_domain_id(context, iommu); - - if ( cdomain < 0 ) - { - printk(XENLOG_G_WARNING VTDPREFIX - "%pd: %pp mapped, but can't find owner\n", - domain, &PCI_SBDF3(seg, bus, devfn)); - res = -EINVAL; - } - else if ( cdomain != domain->domain_id ) - { - printk(XENLOG_G_INFO VTDPREFIX - "%pd: %pp already mapped to d%d", - domain, &PCI_SBDF3(seg, bus, devfn), cdomain); - res = -EINVAL; - } - } - - unmap_vtd_domain_page(context_entries); spin_unlock(&iommu->lock); - return res; + unmap_vtd_domain_page(context_entries); + return 0; } if ( iommu_hwdom_passthrough && is_hardware_domain(domain) ) -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |