Message ID | 1490930665-9696-3-git-send-email-thunder.leizhen@huawei.com |
---|---|
State | Superseded |
Headers | show |
Series | iommu/iova: improve the allocation performance of dma64 | expand |
diff --git a/drivers/iommu/iova.c b/drivers/iommu/iova.c index 8ba8b496..1c49969 100644 --- a/drivers/iommu/iova.c +++ b/drivers/iommu/iova.c @@ -312,15 +312,12 @@ private_find_iova(struct iova_domain *iovad, unsigned long pfn) while (node) { struct iova *iova = rb_entry(node, struct iova, node); - /* If pfn falls within iova's range, return iova */ - if ((pfn >= iova->pfn_lo) && (pfn <= iova->pfn_hi)) { - return iova; - } - if (pfn < iova->pfn_lo) node = node->rb_left; - else if (pfn > iova->pfn_lo) + else if (pfn > iova->pfn_hi) node = node->rb_right; + else + return iova; /* pfn falls within iova's range */ } return NULL;
Below judgement can only be satisfied at the last time, which produced 2N judgements(suppose N times failed, 0 or 1 time successed) in vain. if ((pfn >= iova->pfn_lo) && (pfn <= iova->pfn_hi)) { return iova; } Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com> --- drivers/iommu/iova.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) -- 2.5.0