scsi: ibmvscsi: Fix WARN_ON during event pool release
While removing an ibmvscsi client adapter a WARN_ON like the following is
seen in the kernel log:
drmgr: drmgr: -r -c slot -s U9080.M9S.
783AEC8-V11-C11 -w 5 -d 1
WARNING: CPU: 9 PID: 24062 at ../kernel/dma/mapping.c:311 dma_free_attrs+0x78/0x110
Supported: No, Unreleased kernel
CPU: 9 PID: 24062 Comm: drmgr Kdump: loaded Tainted: G X 5.3.18-12-default
NIP:
c0000000001fa758 LR:
c0000000001fa744 CTR:
c0000000001fa6e0
REGS:
c0000002173375d0 TRAP: 0700 Tainted: G X (5.3.18-12-default)
MSR:
8000000000029033 <SF,EE,ME,IR,DR,RI,LE> CR:
28088282 XER:
20000000
CFAR:
c0000000001fbf0c IRQMASK: 1
GPR00:
c0000000001fa744 c000000217337860 c00000000161ab00 0000000000000000
GPR04:
0000000000000000 c000011e12250000 0000000018010000 0000000000000000
GPR08:
0000000000000000 0000000000000001 0000000000000001 c0080000190f4fa8
GPR12:
c0000000001fa6e0 c000000007fc2a00 0000000000000000 0000000000000000
GPR16:
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR20:
0000000000000000 0000000000000000 0000000000000000 0000000000000000
GPR24:
000000011420e310 0000000000000000 0000000000000000 0000000018010000
GPR28:
c00000000159de50 c000011e12250000 0000000000006600 c000011e5c994848
NIP [
c0000000001fa758] dma_free_attrs+0x78/0x110
LR [
c0000000001fa744] dma_free_attrs+0x64/0x110
Call Trace:
[
c000000217337860] [
000000011420e310] 0x11420e310 (unreliable)
[
c0000002173378b0] [
c0080000190f0280] release_event_pool+0xd8/0x120 [ibmvscsi]
[
c000000217337930] [
c0080000190f3f74] ibmvscsi_remove+0x6c/0x160 [ibmvscsi]
[
c000000217337960] [
c0000000000f3cac] vio_bus_remove+0x5c/0x100
[
c0000002173379a0] [
c00000000087a0a4] device_release_driver_internal+0x154/0x280
[
c0000002173379e0] [
c0000000008777cc] bus_remove_device+0x11c/0x220
[
c000000217337a60] [
c000000000870fc4] device_del+0x1c4/0x470
[
c000000217337b10] [
c0000000008712a0] device_unregister+0x30/0xa0
[
c000000217337b80] [
c0000000000f39ec] vio_unregister_device+0x2c/0x60
[
c000000217337bb0] [
c00800001a1d0964] dlpar_remove_slot+0x14c/0x250 [rpadlpar_io]
[
c000000217337c50] [
c00800001a1d0bcc] remove_slot_store+0xa4/0x110 [rpadlpar_io]
[
c000000217337cd0] [
c000000000c091a0] kobj_attr_store+0x30/0x50
[
c000000217337cf0] [
c00000000057c934] sysfs_kf_write+0x64/0x90
[
c000000217337d10] [
c00000000057be10] kernfs_fop_write+0x1b0/0x290
[
c000000217337d60] [
c000000000488c4c] __vfs_write+0x3c/0x70
[
c000000217337d80] [
c00000000048c648] vfs_write+0xd8/0x260
[
c000000217337dd0] [
c00000000048ca8c] ksys_write+0xdc/0x130
[
c000000217337e20] [
c00000000000b488] system_call+0x5c/0x70
Instruction dump:
7c840074 f8010010 f821ffb1 20840040 eb830218 7c8407b4 48002019 60000000
2fa30000 409e003c 892d0988 792907e0 <
0b090000>
2fbd0000 419e0028 2fbc0000
---[ end trace
5955b3c0cc079942 ]---
rpadlpar_io: slot U9080.M9S.
783AEC8-V11-C11 removed
This is tripped as a result of irqs being disabled during the call to
dma_free_coherent() by release_event_pool(). At this point in the code path
we have quiesced the adapter and it is overly paranoid to be holding the
host lock.
[mkp: fixed build warning reported by sfr]
Link: https://lore.kernel.org/r/1588027793-17952-1-git-send-email-tyreld@linux.ibm.com
Signed-off-by: Tyrel Datwyler <tyreld@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>