]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iommu/iova: Replace cmpxchg with xchg in queue_iova
authorYuqi Jin <jinyuqi@huawei.com>
Thu, 27 Aug 2020 08:43:54 +0000 (16:43 +0800)
committerJoerg Roedel <jroedel@suse.de>
Fri, 4 Sep 2020 10:11:06 +0000 (12:11 +0200)
The performance of the atomic_xchg is better than atomic_cmpxchg because
no comparison is required. While the value of @fq_timer_on can only be 0
or 1. Let's use atomic_xchg instead of atomic_cmpxchg here because we
only need to check that the value changes from 0 to 1 or from 1 to 1.

Signed-off-by: Yuqi Jin <jinyuqi@huawei.com>
Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Cc: Joerg Roedel <joro@8bytes.org>
Link: https://lore.kernel.org/r/1598517834-30275-1-git-send-email-zhangshaokun@hisilicon.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/iova.c

index 45a251da5453712c681ac1599e171e74d5e88645..30d969a4c5fde811ded13735a806eca79af45ce5 100644 (file)
@@ -579,7 +579,7 @@ void queue_iova(struct iova_domain *iovad,
 
        /* Avoid false sharing as much as possible. */
        if (!atomic_read(&iovad->fq_timer_on) &&
-           !atomic_cmpxchg(&iovad->fq_timer_on, 0, 1))
+           !atomic_xchg(&iovad->fq_timer_on, 1))
                mod_timer(&iovad->fq_timer,
                          jiffies + msecs_to_jiffies(IOVA_FQ_TIMEOUT));
 }