• Tom Murphy's avatar
    iommu/amd: Remove unnecessary locking from AMD iommu driver · 37ec8eb8
    Tom Murphy authored
    With or without locking it doesn't make sense for two writers to be
    writing to the same IOVA range at the same time. Even with locking we
    still have a race condition, whoever gets the lock first, so we still
    can't be sure what the result will be. With locking the result will be
    more sane, it will be correct for the last writer, but still useless
    because we can't be sure which writer will get the lock last. It's a
    fundamentally broken design to have two writers writing to the same
    IOVA range at the same time.
    
    So we can remove the locking and work on the assumption that no two
    writers will be writing to the same IOVA range at the same time.
    
    The only exception is when we have to allocate a middle page in the page
    tables, the middle page can cover more than just the IOVA range a writer
    has been allocated. However this isn't an issue in the AMD driver
    because it can atomically allocate middle pages using "cmpxchg64()".
    Signed-off-by: default avatarTom Murphy <murphyt7@tcd.ie>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    37ec8eb8
amd_iommu.c 107 KB