linux-next-20190301 lpfc lockdep complaint

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi James,

With the next-20190301 kernel tree I ran into the lockdep complaint
shown below during shutdown. Can you have a look?

Thanks,

Bart.

=====================================================
WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
5.0.0-rc8-next-20190301-dbg+ #1 Not tainted
-----------------------------------------------------
shutdown/1 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
000000002fea93ea (&(&qp->io_buf_list_put_lock)->rlock){+.+.}, at: lpfc_io_free+0xa2/0x360 [lpfc]

and this task is already holding:
00000000cfd51f54 (&(&phba->hbalock)->rlock){..-.}, at: lpfc_io_free+0x30/0x360 [lpfc]
which would create a new lock dependency:
 (&(&phba->hbalock)->rlock){..-.} -> (&(&qp->io_buf_list_put_lock)->rlock){+.+.}

but this new dependency connects a SOFTIRQ-irq-safe lock:
 (&(&phba->hbalock)->rlock){..-.}

... which became SOFTIRQ-irq-safe at:
  lock_acquire+0xe3/0x200
  _raw_spin_lock_irq+0x38/0x50
  lpfc_sli_check_eratt.part.48+0x2f/0x570 [lpfc]
  lpfc_poll_eratt+0xef/0x140 [lpfc]
  call_timer_fn+0x10b/0x3f0
  run_timer_softirq+0x3f1/0x960
  __do_softirq+0x12d/0x5b7
  irq_exit+0xdd/0x100
  smp_apic_timer_interrupt+0xe4/0x340
  apic_timer_interrupt+0xf/0x20
  default_idle+0x23/0x1f0
  arch_cpu_idle+0x15/0x20
  default_idle_call+0x35/0x40
  do_idle+0x2bb/0x2e0
  cpu_startup_entry+0x1d/0x20
  start_secondary+0x245/0x340
  secondary_startup_64+0xa4/0xb0

to a SOFTIRQ-irq-unsafe lock:
 (&(&qp->io_buf_list_put_lock)->rlock){+.+.}

... which became SOFTIRQ-irq-unsafe at:
...
  lock_acquire+0xe3/0x200
  _raw_spin_lock+0x32/0x50
  lpfc_io_buf_replenish+0x103/0x260 [lpfc]
  lpfc_sli4_post_io_sgl_list+0xa80/0xba0 [lpfc]
  lpfc_new_io_buf+0x370/0x4f0 [lpfc]
  lpfc_sli4_hba_setup+0x232d/0x2570 [lpfc]
  lpfc_pci_probe_one.cold.93+0x1816/0x1b1e [lpfc]
  local_pci_probe+0x7a/0xc0
  pci_device_probe+0x2f8/0x310
  really_probe+0x182/0x540
  driver_probe_device+0x118/0x180
  device_driver_attach+0x8d/0xa0
  __driver_attach+0xba/0x1a0
  bus_for_each_dev+0xfd/0x160
  driver_attach+0x2b/0x30
  bus_add_driver+0x23d/0x2f0
  driver_register+0xdc/0x160
  __pci_register_driver+0xda/0xf0
  wait_transaction_locked+0xf7/0x1b0 [jbd2]
  do_one_initcall+0xc5/0x3ce
  do_init_module+0x108/0x360
  load_module+0x36eb/0x3b80
  __do_sys_finit_module+0x133/0x1c0
  __x64_sys_finit_module+0x43/0x50
  do_syscall_64+0x77/0x220
  entry_SYSCALL_64_after_hwframe+0x49/0xbe

other info that might help us debug this:

 Possible interrupt unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&(&qp->io_buf_list_put_lock)->rlock);
                               local_irq_disable();
                               lock(&(&phba->hbalock)->rlock);
                               lock(&(&qp->io_buf_list_put_lock)->rlock);
  <Interrupt>
    lock(&(&phba->hbalock)->rlock);

 *** DEADLOCK ***

4 locks held by shutdown/1:
 #0: 00000000493e5481 (system_transition_mutex){+.+.}, at: __do_sys_reboot+0x112/0x2a0
 #1: 00000000a0e71590 (&dev->mutex){....}, at: device_shutdown+0x105/0x2c0
 #2: 000000009e6eba39 (&dev->mutex){....}, at: device_shutdown+0x113/0x2c0
 #3: 00000000cfd51f54 (&(&phba->hbalock)->rlock){..-.}, at: lpfc_io_free+0x30/0x360 [lpfc]

the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
-> (&(&phba->hbalock)->rlock){..-.} ops: 45890 {
   IN-SOFTIRQ-W at:
                    lock_acquire+0xe3/0x200
                    _raw_spin_lock_irq+0x38/0x50
                    lpfc_sli_check_eratt.part.48+0x2f/0x570 [lpfc]
                    lpfc_poll_eratt+0xef/0x140 [lpfc]
                    call_timer_fn+0x10b/0x3f0
                    run_timer_softirq+0x3f1/0x960
                    __do_softirq+0x12d/0x5b7
                    irq_exit+0xdd/0x100
                    smp_apic_timer_interrupt+0xe4/0x340
                    apic_timer_interrupt+0xf/0x20
                    default_idle+0x23/0x1f0
                    arch_cpu_idle+0x15/0x20
                    default_idle_call+0x35/0x40
                    do_idle+0x2bb/0x2e0
                    cpu_startup_entry+0x1d/0x20
                    start_secondary+0x245/0x340
                    secondary_startup_64+0xa4/0xb0
   INITIAL USE at:
                   lock_acquire+0xe3/0x200
                   _raw_spin_lock_irqsave+0x3d/0x60
                   lpfc_sli4_post_sync_mbox+0x33/0x560 [lpfc]
                   lpfc_sli_issue_mbox_s4+0x580/0x6d0 [lpfc]
                   lpfc_sli_issue_mbox+0x32/0x40 [lpfc]
                   lpfc_sli4_read_config+0x64/0xa90 [lpfc]
                   lpfc_pci_probe_one+0x188d/0x2340 [lpfc]
                   local_pci_probe+0x7a/0xc0
                   pci_device_probe+0x2f8/0x310
                   really_probe+0x182/0x540
                   driver_probe_device+0x118/0x180
                   device_driver_attach+0x8d/0xa0
                   __driver_attach+0xba/0x1a0
                   bus_for_each_dev+0xfd/0x160
                   driver_attach+0x2b/0x30
                   bus_add_driver+0x23d/0x2f0
                   driver_register+0xdc/0x160
                   __pci_register_driver+0xda/0xf0
                   wait_transaction_locked+0xf7/0x1b0 [jbd2]
                   do_one_initcall+0xc5/0x3ce
                   do_init_module+0x108/0x360
                   load_module+0x36eb/0x3b80
                   __do_sys_finit_module+0x133/0x1c0
                   __x64_sys_finit_module+0x43/0x50
                   do_syscall_64+0x77/0x220
                   entry_SYSCALL_64_after_hwframe+0x49/0xbe
 }
 ... key      at: [<ffffffffa0407d00>] __key.61834+0x0/0xfffffffffff84300 [lpfc]
 ... acquired at:
   __lock_acquire+0x11ed/0x1b60
   lock_acquire+0xe3/0x200
   _raw_spin_lock+0x32/0x50
   lpfc_io_free+0xa2/0x360 [lpfc]
   lpfc_pci_remove_one+0x832/0xf10 [lpfc]
   pci_device_shutdown+0x50/0x90
   device_shutdown+0x1ef/0x2c0
   kernel_restart_prepare+0x42/0x50
   kernel_restart+0x12/0x30
   __do_sys_reboot+0x145/0x2a0
   __x64_sys_reboot+0x55/0x60
   do_syscall_64+0x77/0x220
   entry_SYSCALL_64_after_hwframe+0x49/0xbe


the dependencies between the lock to be acquired
 and SOFTIRQ-irq-unsafe lock:
-> (&(&qp->io_buf_list_put_lock)->rlock){+.+.} ops: 11845 {
   HARDIRQ-ON-W at:
                    lock_acquire+0xe3/0x200
                    _raw_spin_lock+0x32/0x50
                    lpfc_io_buf_replenish+0x103/0x260 [lpfc]
                    lpfc_sli4_post_io_sgl_list+0xa80/0xba0 [lpfc]
                    lpfc_new_io_buf+0x370/0x4f0 [lpfc]
                    lpfc_sli4_hba_setup+0x232d/0x2570 [lpfc]
                    lpfc_pci_probe_one.cold.93+0x1816/0x1b1e [lpfc]
                    local_pci_probe+0x7a/0xc0
                    pci_device_probe+0x2f8/0x310
                    really_probe+0x182/0x540
                    driver_probe_device+0x118/0x180
                    device_driver_attach+0x8d/0xa0
                    __driver_attach+0xba/0x1a0
                    bus_for_each_dev+0xfd/0x160
                    driver_attach+0x2b/0x30
                    bus_add_driver+0x23d/0x2f0
                    driver_register+0xdc/0x160
                    __pci_register_driver+0xda/0xf0
                    wait_transaction_locked+0xf7/0x1b0 [jbd2]
                    do_one_initcall+0xc5/0x3ce
                    do_init_module+0x108/0x360
                    load_module+0x36eb/0x3b80
                    __do_sys_finit_module+0x133/0x1c0
                    __x64_sys_finit_module+0x43/0x50
                    do_syscall_64+0x77/0x220
                    entry_SYSCALL_64_after_hwframe+0x49/0xbe
   SOFTIRQ-ON-W at:
                    lock_acquire+0xe3/0x200
                    _raw_spin_lock+0x32/0x50
                    lpfc_io_buf_replenish+0x103/0x260 [lpfc]
                    lpfc_sli4_post_io_sgl_list+0xa80/0xba0 [lpfc]
                    lpfc_new_io_buf+0x370/0x4f0 [lpfc]
                    lpfc_sli4_hba_setup+0x232d/0x2570 [lpfc]
                    lpfc_pci_probe_one.cold.93+0x1816/0x1b1e [lpfc]
                    local_pci_probe+0x7a/0xc0
                    pci_device_probe+0x2f8/0x310
                    really_probe+0x182/0x540
                    driver_probe_device+0x118/0x180
                    device_driver_attach+0x8d/0xa0
                    __driver_attach+0xba/0x1a0
                    bus_for_each_dev+0xfd/0x160
                    driver_attach+0x2b/0x30
                    bus_add_driver+0x23d/0x2f0
                    driver_register+0xdc/0x160
                    __pci_register_driver+0xda/0xf0
                    wait_transaction_locked+0xf7/0x1b0 [jbd2]
                    do_one_initcall+0xc5/0x3ce
                    do_init_module+0x108/0x360
                    load_module+0x36eb/0x3b80
                    __do_sys_finit_module+0x133/0x1c0
                    __x64_sys_finit_module+0x43/0x50
                    do_syscall_64+0x77/0x220
                    entry_SYSCALL_64_after_hwframe+0x49/0xbe
   INITIAL USE at:
                   lock_acquire+0xe3/0x200
                   _raw_spin_lock+0x32/0x50
                   lpfc_io_buf_flush+0x12e/0x590 [lpfc]
                   lpfc_sli4_io_sgl_update+0x15e/0x3e0 [lpfc]
                   lpfc_sli4_hba_setup+0x1d45/0x2570 [lpfc]
                   lpfc_pci_probe_one.cold.93+0x1816/0x1b1e [lpfc]
                   local_pci_probe+0x7a/0xc0
                   pci_device_probe+0x2f8/0x310
                   really_probe+0x182/0x540
                   driver_probe_device+0x118/0x180
                   device_driver_attach+0x8d/0xa0
                   __driver_attach+0xba/0x1a0
                   bus_for_each_dev+0xfd/0x160
                   driver_attach+0x2b/0x30
                   bus_add_driver+0x23d/0x2f0
                   driver_register+0xdc/0x160
                   __pci_register_driver+0xda/0xf0
                   wait_transaction_locked+0xf7/0x1b0 [jbd2]
                   do_one_initcall+0xc5/0x3ce
                   do_init_module+0x108/0x360
                   load_module+0x36eb/0x3b80
                   __do_sys_finit_module+0x133/0x1c0
                   __x64_sys_finit_module+0x43/0x50
                   do_syscall_64+0x77/0x220
                   entry_SYSCALL_64_after_hwframe+0x49/0xbe
 }
 ... key      at: [<ffffffffa0407f80>] __key.62303+0x0/0xfffffffffff84080 [lpfc]
 ... acquired at:
   __lock_acquire+0x11ed/0x1b60
   lock_acquire+0xe3/0x200
   _raw_spin_lock+0x32/0x50
   lpfc_io_free+0xa2/0x360 [lpfc]
   lpfc_pci_remove_one+0x832/0xf10 [lpfc]
   pci_device_shutdown+0x50/0x90
   device_shutdown+0x1ef/0x2c0
   kernel_restart_prepare+0x42/0x50
   kernel_restart+0x12/0x30
   __do_sys_reboot+0x145/0x2a0
   __x64_sys_reboot+0x55/0x60
   do_syscall_64+0x77/0x220
   entry_SYSCALL_64_after_hwframe+0x49/0xbe


stack backtrace:
CPU: 4 PID: 1 Comm: shutdown Not tainted 5.0.0-rc8-next-20190301-dbg+ #1
Hardware name: Bochs Bochs, BIOS Bochs 01/01/2011
Call Trace:
 dump_stack+0x86/0xca
 check_usage.cold.59+0x473/0x563
 check_prev_add.constprop.43+0x241/0x1170
 __lock_acquire+0x11ed/0x1b60
 lock_acquire+0xe3/0x200
 _raw_spin_lock+0x32/0x50
 lpfc_io_free+0xa2/0x360 [lpfc]
 lpfc_pci_remove_one+0x832/0xf10 [lpfc]
 pci_device_shutdown+0x50/0x90
 device_shutdown+0x1ef/0x2c0
 kernel_restart_prepare+0x42/0x50
 kernel_restart+0x12/0x30
 __do_sys_reboot+0x145/0x2a0
 __x64_sys_reboot+0x55/0x60
 do_syscall_64+0x77/0x220
 entry_SYSCALL_64_after_hwframe+0x49/0xbe

reboot: Restarting system
reboot: machine restart



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux