|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] 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#staging
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |