• Nathan Fontenot's avatar
    powerpc/pseries: Remove prrn_work workqueue · cd24e457
    Nathan Fontenot authored
    When a PRRN event is received we are already running in a worker
    thread. Instead of spawning off another worker thread on the prrn_work
    workqueue to handle the PRRN event we can just call the PRRN handler
    routine directly.
    
    With this update we can also pass the scope variable for the PRRN
    event directly to the handler instead of it being a global variable.
    
    This patch fixes the following oops mnessage we are seeing in PRRN testing:
    
      Oops: Bad kernel stack pointer, sig: 6 [#1]
      SMP NR_CPUS=2048 NUMA pSeries
      Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace sunrpc fscache binfmt_misc reiserfs vfat fat rpadlpar_io(X) rpaphp(X) tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag af_packet xfs libcrc32c dm_service_time ibmveth(X) ses enclosure scsi_transport_sas rtc_generic btrfs xor raid6_pq sd_mod ibmvscsi(X) scsi_transport_srp ipr(X) libata sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
      Supported: Yes, External                                                     54
      CPU: 7 PID: 18967 Comm: kworker/u96:0 Tainted: G                 X 4.4.126-94.22-default #1
      Workqueue: pseries hotplug workque pseries_hp_work_fn
      task: c000000775367790 ti: c00000001ebd4000 task.ti: c00000070d140000
      NIP: 0000000000000000 LR: 000000001fb3d050 CTR: 0000000000000000
      REGS: c00000001ebd7d40 TRAP: 0700   Tainted: G                 X  (4.4.126-94.22-default)
      MSR: 8000000102081000 <41,VEC,ME5  CR: 28000002  XER: 20040018   4
      CFAR: 000000001fb3d084 40 419   1                                3
      GPR00: 000000000000000040000000000010007 000000001ffff400 000000041fffe200
      GPR04: 000000000000008050000000000000000 000000001fb15fa8 0000000500000500
      GPR08: 000000000001f40040000000000000001 0000000000000000 000005:5200040002
      GPR12: 00000000000000005c000000007a05400 c0000000000e89f8 000000001ed9f668
      GPR16: 000000001fbeff944000000001fbeff94 000000001fb545e4 0000006000000060
      GPR20: ffffffffffffffff4ffffffffffffffff 0000000000000000 0000000000000000
      GPR24: 00000000000000005400000001fb3c000 0000000000000000 000000001fb1b040
      GPR28: 000000001fb240004000000001fb440d8 0000000000000008 0000000000000000
      NIP [0000000000000000] 5         (null)
      LR [000000001fb3d050] 031fb3d050
      Call Trace:            4
      Instruction dump:      4                                       5:47 12    2
      XXXXXXXX XXXXXXXX XXXXX4XX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX
      XXXXXXXX XXXXXXXX XXXXX5XX XXXXXXXX 60000000 60000000 60000000 60000000
      ---[ end trace aa5627b04a7d9d6b ]---                                       3NMI watchdog: BUG: soft lockup - CPU#27 stuck for 23s! [kworker/27:0:13903]
      Modules linked in: nfsv3 nfs_acl rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs lockd grace sunrpc fscache binfmt_misc reiserfs vfat fat rpadlpar_io(X) rpaphp(X) tcp_diag udp_diag inet_diag unix_diag af_packet_diag netlink_diag af_packet xfs libcrc32c dm_service_time ibmveth(X) ses enclosure scsi_transport_sas rtc_generic btrfs xor raid6_pq sd_mod ibmvscsi(X) scsi_transport_srp ipr(X) libata sg dm_multipath dm_mod scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
      Supported: Yes, External
      CPU: 27 PID: 13903 Comm: kworker/27:0 Tainted: G      D          X 4.4.126-94.22-default #1
      Workqueue: events prrn_work_fn
      task: c000000747cfa390 ti: c00000074712c000 task.ti: c00000074712c000
      NIP: c0000000008002a8 LR: c000000000090770 CTR: 000000000032e088
      REGS: c00000074712f7b0 TRAP: 0901   Tainted: G      D          X  (4.4.126-94.22-default)
      MSR: 8000000100009033 <SF,EE,ME,IR,DR,RI,LE>  CR: 22482044  XER: 20040000
      CFAR: c0000000008002c4 SOFTE: 1
      GPR00: c000000000090770 c00000074712fa30 c000000000f09800 c000000000fa1928 6:02
      GPR04: c000000775f5e000 fffffffffffffffe 0000000000000001 c000000000f42db8
      GPR08: 0000000000000001 0000000080000007 0000000000000000 0000000000000000
      GPR12: 8006210083180000 c000000007a14400
      NIP [c0000000008002a8] _raw_spin_lock+0x68/0xd0
      LR [c000000000090770] mobility_rtas_call+0x50/0x100
      Call Trace:            59                                        5
      [c00000074712fa60] [c000000000090770] mobility_rtas_call+0x50/0x100
      [c00000074712faf0] [c000000000090b08] pseries_devicetree_update+0xf8/0x530
      [c00000074712fc20] [c000000000031ba4] prrn_work_fn+0x34/0x50
      [c00000074712fc40] [c0000000000e0390] process_one_work+0x1a0/0x4e0
      [c00000074712fcd0] [c0000000000e0870] worker_thread+0x1a0/0x6105:57       2
      [c00000074712fd80] [c0000000000e8b18] kthread+0x128/0x150
      [c00000074712fe30] [c0000000000096f8] ret_from_kernel_thread+0x5c/0x64
      Instruction dump:
      2c090000 40c20010 7d40192d 40c2fff0 7c2004ac 2fa90000 40de0018 5:540030   3
      e8010010 ebe1fff8 7c0803a6 4e800020 <7c210b78> e92d0000 89290009 792affe3
    Signed-off-by: default avatarJohn Allen <jallen@linux.ibm.com>
    Signed-off-by: default avatarHaren Myneni <haren@us.ibm.com>
    Signed-off-by: default avatarNathan Fontenot <nfont@linux.vnet.ibm.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    cd24e457
rtasd.c 14.7 KB