• Vasant Hegde's avatar
    iommu/amd: Fix possible irq lock inversion dependency issue · 84b1cec4
    Vasant Hegde authored
    LOCKDEP detector reported below warning:
    ----------------------------------------
    [   23.796949] ========================================================
    [   23.796950] WARNING: possible irq lock inversion dependency detected
    [   23.796952] 6.8.0fix+ #811 Not tainted
    [   23.796954] --------------------------------------------------------
    [   23.796954] kworker/0:1/8 just changed the state of lock:
    [   23.796956] ff365325e084a9b8 (&domain->lock){..-.}-{3:3}, at: amd_iommu_flush_iotlb_all+0x1f/0x50
    [   23.796969] but this lock took another, SOFTIRQ-unsafe lock in the past:
    [   23.796970]  (pd_bitmap_lock){+.+.}-{3:3}
    [   23.796972]
    
                   and interrupts could create inverse lock ordering between them.
    
    [   23.796973]
                   other info that might help us debug this:
    [   23.796974] Chain exists of:
                     &domain->lock --> &dev_data->lock --> pd_bitmap_lock
    
    [   23.796980]  Possible interrupt unsafe locking scenario:
    
    [   23.796981]        CPU0                    CPU1
    [   23.796982]        ----                    ----
    [   23.796983]   lock(pd_bitmap_lock);
    [   23.796985]                                local_irq_disable();
    [   23.796985]                                lock(&domain->lock);
    [   23.796988]                                lock(&dev_data->lock);
    [   23.796990]   <Interrupt>
    [   23.796991]     lock(&domain->lock);
    
    Fix this issue by disabling interrupt when acquiring pd_bitmap_lock.
    
    Note that this is temporary fix. We have a plan to replace custom bitmap
    allocator with IDA allocator.
    
    Fixes: 87a6f1f2 ("iommu/amd: Introduce per-device domain ID to fix potential TLB aliasing issue")
    Reviewed-by: default avatarSuravee Suthikulpanit <suravee.suthikulpanit@amd.com>
    Signed-off-by: default avatarVasant Hegde <vasant.hegde@amd.com>
    Link: https://lore.kernel.org/r/20240404102717.6705-1-vasant.hegde@amd.comSigned-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    84b1cec4
iommu.c 92.3 KB