mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
VT-d/ATS: tidy device_in_domain()
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>
This commit is contained in:
1 parent
15aa6c6823
commit
fa8f9792be
1 file changed
+15
-13
@@ -71,23 +71,25 @@ int ats_device(const struct pci_dev *pdev, const struct acpi_drhd_unit *drhd)
|
||||
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 ( ctxt_entry == NULL )
|
||||
if ( unlikely(!iommu->root_maddr) )
|
||||
{
|
||||
ASSERT_UNREACHABLE();
|
||||
return false;
|
||||
}
|
||||
|
||||
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 iommu *iommu,
|
||||
if ( tt != CONTEXT_TT_DEV_IOTLB )
|
||||
goto out;
|
||||
|
||||
found = 1;
|
||||
found = true;
|
||||
out:
|
||||
if ( root_entry )
|
||||
unmap_vtd_domain_page(root_entry);
|
||||
|
||||