]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/amd: Use try_cmpxchg64 in alloc_pte and free_clear_pte
authorUros Bizjak <ubizjak@gmail.com>
Wed, 25 May 2022 14:54:16 +0000 (16:54 +0200)
committerJoerg Roedel <jroedel@suse.de>
Thu, 23 Jun 2022 07:43:31 +0000 (09:43 +0200)
commit6e2c35b7abe8a070d36e4623bbf682accfa401ab
tree76e5587ab57d764a92540345c19b2800387fdc48
parent08aafa0d475a08e31a13403e9df41c7179f4bdcd
iommu/amd: Use try_cmpxchg64 in alloc_pte and free_clear_pte

Use try_cmpxchg64 instead of cmpxchg64 (*ptr, old, new) != old in
alloc_pte and free_clear_pte.  cmpxchg returns success in ZF flag, so this
change saves a compare after cmpxchg (and related move instruction
in front of cmpxchg). Also, remove racy explicit assignment to pteval
when cmpxchg fails, this is what try_cmpxchg does implicitly from
*pte in an atomic way.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com>
Cc: Will Deacon <will@kernel.org>
Link: https://lore.kernel.org/r/20220525145416.10816-1-ubizjak@gmail.com
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/amd/io_pgtable.c