• W
    iommu/arm-smmu: really fix page table locking · c9d09e27
    Will Deacon 提交于
    Commit a44a9791 ("iommu/arm-smmu: use mutex instead of spinlock for
    locking page tables") replaced the page table spinlock with a mutex, to
    allow blocking allocations to satisfy lazy mapping requests.
    
    Unfortunately, it turns out that IOMMU mappings are created from atomic
    context (e.g. spinlock held during a dma_map), so this change doesn't
    really help us in practice.
    
    This patch is a partial revert of the offending commit, bringing back
    the original spinlock but replacing our page table allocations for any
    levels below the pgd (which is allocated during domain init) with
    GFP_ATOMIC instead of GFP_KERNEL.
    
    Cc: <stable@vger.kernel.org>
    Reported-by: NAndreas Herrmann <andreas.herrmann@calxeda.com>
    Signed-off-by: NWill Deacon <will.deacon@arm.com>
    c9d09e27
arm-smmu.c 52.0 KB