• Bart Van Assche's avatar
    scsi: lpfc: Fix a kernel warning triggered by lpfc_sli4_enable_intr() · eea2d396
    Bart Van Assche authored
    Fix the following lockdep warning:
    
    ============================================
    WARNING: possible recursive locking detected
    5.4.0-rc6-dbg+ #2 Not tainted
    --------------------------------------------
    systemd-udevd/130 is trying to acquire lock:
    ffffffff826b05d0 (cpu_hotplug_lock.rw_sem){++++}, at: irq_calc_affinity_vectors+0x63/0x90
    
    but task is already holding lock:
    
    ffffffff826b05d0 (cpu_hotplug_lock.rw_sem){++++}, at: lpfc_sli4_enable_intr+0x422/0xd50 [lpfc]
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
           CPU0
           ----
      lock(cpu_hotplug_lock.rw_sem);
      lock(cpu_hotplug_lock.rw_sem);
    
    *** DEADLOCK ***
     May be due to missing lock nesting notation
    2 locks held by systemd-udevd/130:
     #0: ffff8880d53fe210 (&dev->mutex){....}, at: __device_driver_lock+0x4a/0x70
     #1: ffffffff826b05d0 (cpu_hotplug_lock.rw_sem){++++}, at: lpfc_sli4_enable_intr+0x422/0xd50 [lpfc]
    
    stack backtrace:
    CPU: 1 PID: 130 Comm: systemd-udevd Not tainted 5.4.0-rc6-dbg+ #2
    Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
    Call Trace:
     dump_stack+0xa5/0xe6
     __lock_acquire.cold+0xf7/0x23a
     lock_acquire+0x106/0x240
     cpus_read_lock+0x41/0xe0
     irq_calc_affinity_vectors+0x63/0x90
     __pci_enable_msix_range+0x10a/0x950
     pci_alloc_irq_vectors_affinity+0x144/0x210
     lpfc_sli4_enable_intr+0x4b2/0xd50 [lpfc]
     lpfc_pci_probe_one+0x1411/0x22b0 [lpfc]
     local_pci_probe+0x7c/0xc0
     pci_device_probe+0x25d/0x390
     really_probe+0x170/0x510
     driver_probe_device+0x127/0x190
     device_driver_attach+0x98/0xa0
     __driver_attach+0xb6/0x1a0
     bus_for_each_dev+0x100/0x150
     driver_attach+0x31/0x40
     bus_add_driver+0x246/0x300
     driver_register+0xe0/0x170
     __pci_register_driver+0xde/0xf0
     lpfc_init+0x134/0x1000 [lpfc]
     do_one_initcall+0xda/0x47e
     do_init_module+0x10a/0x3b0
     load_module+0x4318/0x47c0
     __do_sys_finit_module+0x134/0x1d0
     __x64_sys_finit_module+0x47/0x50
     do_syscall_64+0x6f/0x2e0
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    Fixes: dcaa2136 ("scsi: lpfc: Change default IRQ model on AMD architectures")
    Link: https://lore.kernel.org/r/20191107052158.25788-4-bvanassche@acm.orgSigned-off-by: default avatarBart Van Assche <bvanassche@acm.org>
    Reviewed-by: default avatarJames Smart <jsmart2021@gmail.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    eea2d396
lpfc_init.c 407 KB