diff mbox series

[3/3] VT-d/ATS: tidy device_in_domain()

Message ID 959e3395-4637-6e9b-74dc-9982acf10dec@suse.com (mailing list archive)
State New, archived
Headers show
Series VT-d: avoid PCI device lookup / other tidying | expand

Commit Message

Jan Beulich Sept. 4, 2019, 1:28 p.m. UTC
Use appropriate types. Drop unnecessary casts. Check for failures which
can (at least in theory because of non-obvious breakage elsewhere)
occur, instead of ones which really can't (map_domain_page() won't
return NULL).

Signed-off-by: Jan Beulich <jbeulich@suse.com>

Comments

Tian, Kevin Sept. 5, 2019, 3:11 a.m. UTC | #1
> From: Jan Beulich [mailto:jbeulich@suse.com]
> Sent: Wednesday, September 4, 2019 9:28 PM
> 
> Use appropriate types. Drop unnecessary casts. Check for failures which
> can (at least in theory because of non-obvious breakage elsewhere)
> occur, instead of ones which really can't (map_domain_page() won't
> return NULL).
> 
> Signed-off-by: Jan Beulich <jbeulich@suse.com>
> 

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
diff mbox series

Patch

--- a/xen/drivers/passthrough/vtd/x86/ats.c
+++ b/xen/drivers/passthrough/vtd/x86/ats.c
@@ -71,23 +71,25 @@  int ats_device(const struct pci_dev *pde
     return pos;
 }
 
-static int device_in_domain(const struct iommu *iommu,
-                            const struct pci_dev *pdev, u16 did)
+static bool device_in_domain(const struct iommu *iommu,
+                             const struct pci_dev *pdev, uint16_t did)
 {
-    struct root_entry *root_entry = NULL;
+    struct root_entry *root_entry;
     struct context_entry *ctxt_entry = NULL;
-    int tt, found = 0;
+    unsigned int tt;
+    bool found = false;
 
-    root_entry = (struct root_entry *) map_vtd_domain_page(iommu->root_maddr);
-    if ( !root_entry || !root_present(root_entry[pdev->bus]) )
-        goto out;
-
-    ctxt_entry = (struct context_entry *)
-                 map_vtd_domain_page(root_entry[pdev->bus].val);
+    if ( unlikely(!iommu->root_maddr) )
+    {
+        ASSERT_UNREACHABLE();
+        return false;
+    }
 
-    if ( ctxt_entry == NULL )
+    root_entry = map_vtd_domain_page(iommu->root_maddr);
+    if ( !root_present(root_entry[pdev->bus]) )
         goto out;
 
+    ctxt_entry = map_vtd_domain_page(root_entry[pdev->bus].val);
     if ( context_domain_id(ctxt_entry[pdev->devfn]) != did )
         goto out;
 
@@ -95,7 +97,7 @@  static int device_in_domain(const struct
     if ( tt != CONTEXT_TT_DEV_IOTLB )
         goto out;
 
-    found = 1;
+    found = true;
 out:
     if ( root_entry )
         unmap_vtd_domain_page(root_entry);