Finn Thain
f6f75b1756
scsi: mesh: Fix panic after host or bus reset
[ Upstream commit edd7dd2292 ]
Booting Linux with a Conner CP3200 drive attached to the MESH SCSI bus
results in EH measures and a panic:
[ 25.499838] mesh: configured for synchronous 5 MB/s
[ 25.787154] mesh: performing initial bus reset...
[ 29.867115] scsi host0: MESH
[ 29.929527] mesh: target 0 synchronous at 3.6 MB/s
[ 29.998763] scsi 0:0:0:0: Direct-Access CONNER CP3200-200mb-3.5 4040 PQ: 0 ANSI: 1 CCS
[ 31.989975] sd 0:0:0:0: [sda] 415872 512-byte logical blocks: (213 MB/203 MiB)
[ 32.070975] sd 0:0:0:0: [sda] Write Protect is off
[ 32.137197] sd 0:0:0:0: [sda] Mode Sense: 5b 00 00 08
[ 32.209661] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 32.332708] sda: [mac] sda1 sda2 sda3
[ 32.417733] sd 0:0:0:0: [sda] Attached SCSI disk
... snip ...
[ 76.687067] mesh_abort((ptrval))
[ 76.743606] mesh: state at (ptrval), regs at (ptrval), dma at (ptrval)
[ 76.810798] ct=6000 seq=86 bs=4017 fc= 0 exc= 0 err= 0 im= 7 int= 0 sp=85
[ 76.880720] dma stat=84e0 cmdptr=1f73d000
[ 76.941387] phase=4 msgphase=0 conn_tgt=0 data_ptr=24576
[ 77.005567] dma_st=1 dma_ct=0 n_msgout=0
[ 77.065456] target 0: req=(ptrval) goes_out=0 saved_ptr=0
[ 77.130512] mesh_abort((ptrval))
[ 77.187670] mesh: state at (ptrval), regs at (ptrval), dma at (ptrval)
[ 77.255594] ct=6000 seq=86 bs=4017 fc= 0 exc= 0 err= 0 im= 7 int= 0 sp=85
[ 77.325778] dma stat=84e0 cmdptr=1f73d000
[ 77.387239] phase=4 msgphase=0 conn_tgt=0 data_ptr=24576
[ 77.453665] dma_st=1 dma_ct=0 n_msgout=0
[ 77.515900] target 0: req=(ptrval) goes_out=0 saved_ptr=0
[ 77.582902] mesh_host_reset
[ 88.187083] Kernel panic - not syncing: mesh: double DMA start !
[ 88.254510] CPU: 0 PID: 358 Comm: scsi_eh_0 Not tainted 5.6.13-pmac #1
[ 88.323302] Call Trace:
[ 88.378854] [e16ddc58] [c0027080] panic+0x13c/0x308 (unreliable)
[ 88.446221] [e16ddcb8] [c02b2478] mesh_start.part.12+0x130/0x414
[ 88.513298] [e16ddcf8] [c02b2fc8] mesh_queue+0x54/0x70
[ 88.577097] [e16ddd18] [c02a1848] scsi_send_eh_cmnd+0x374/0x384
[ 88.643476] [e16dddc8] [c02a1938] scsi_eh_tur+0x5c/0xb8
[ 88.707878] [e16dddf8] [c02a1ab8] scsi_eh_test_devices+0x124/0x178
[ 88.775663] [e16dde28] [c02a2094] scsi_eh_ready_devs+0x588/0x8a8
[ 88.843124] [e16dde98] [c02a31d8] scsi_error_handler+0x344/0x520
[ 88.910697] [e16ddf08] [c00409c8] kthread+0xe4/0xe8
[ 88.975166] [e16ddf38] [c000f234] ret_from_kernel_thread+0x14/0x1c
[ 89.044112] Rebooting in 180 seconds..
In theory, a panic can happen after a bus or host reset with dma_started
flag set. Fix this by halting the DMA before reinitializing the host.
Don't assume that ms->current_req is set when halt_dma() is invoked as it
may not hold for bus or host reset.
BTW, this particular Conner drive can be made to work by inhibiting
disconnect/reselect with 'mesh.resel_targets=0'.
Link: https://lore.kernel.org/r/3952bc691e150a7128b29120999b6092071b039a.1595460351.git.fthain@telegraphics.com.au
Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Cc: Paul Mackerras <paulus@ozlabs.org>
Reported-and-tested-by: Stan Johnson <userm57@yahoo.com>
Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2020-08-19 08:16:15 +02:00
..
2019-08-28 08:28:39 -05:00
2020-02-24 08:36:38 +01:00
2019-07-30 12:12:59 -04:00
2019-05-21 10:50:46 +02:00
2020-08-19 08:16:09 +02:00
2019-06-05 17:37:07 +02:00
2020-01-14 20:08:37 +01:00
2019-10-05 12:53:27 -07:00
2020-01-23 08:22:58 +01:00
2020-02-11 04:35:44 -08:00
2020-06-24 17:50:16 +02:00
2019-07-30 15:58:28 -04:00
2019-10-25 20:11:33 -04:00
2019-05-30 11:26:32 -07:00
2020-01-23 08:22:58 +01:00
2019-09-21 10:50:15 -07:00
2020-02-05 21:22:49 +00:00
2020-06-24 17:50:15 +02:00
2020-06-24 17:50:19 +02:00
2019-07-30 15:59:53 -04:00
2019-06-20 15:37:02 -04:00
2020-04-29 16:32:58 +02:00
2020-01-09 10:19:46 +01:00
2020-06-30 15:37:00 -04:00
2020-08-19 08:16:15 +02:00
2020-07-29 10:18:27 +02:00
2019-07-11 15:14:01 -07:00
2019-07-11 15:17:41 -07:00
2020-01-04 19:18:14 +01:00
2020-06-24 17:50:21 +02:00
2020-06-24 17:50:20 +02:00
2020-06-30 15:36:50 -04:00
2020-02-11 04:35:44 -08:00
2020-04-29 16:33:06 +02:00
2019-01-29 00:40:54 -05:00
2019-08-12 21:58:07 -04:00
2020-06-24 17:50:47 +02:00
2017-10-25 05:40:22 -04:00
2019-02-25 21:37:25 -05:00
2017-12-04 20:32:53 -05:00
2019-03-02 11:39:54 -08:00
2018-12-19 21:54:07 -05:00
2018-10-17 21:58:51 -04:00
2019-05-24 17:36:45 +02:00
2018-08-30 07:27:22 -04:00
2019-01-08 07:58:37 -05:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2019-07-11 15:17:41 -07:00
2019-07-11 15:17:41 -07:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2018-12-18 23:13:12 -05:00
2018-06-19 22:02:25 -04:00
2019-05-21 10:50:45 +02:00
2020-01-04 19:18:10 +01:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-06-05 17:37:11 +02:00
2019-06-05 17:37:11 +02:00
2019-05-21 10:50:45 +02:00
2019-10-09 23:39:35 -04:00
2017-11-02 11:10:55 +01:00
2018-12-18 23:19:21 -05:00
2017-11-02 11:10:55 +01:00
2019-05-24 17:36:45 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-07-11 15:17:41 -07:00
2019-06-20 15:21:33 -04:00
2019-07-30 12:18:24 -04:00
2019-06-18 19:46:18 -04:00
2019-07-30 12:17:28 -04:00
2019-06-18 19:46:22 -04:00
2018-09-25 20:45:53 -04:00
2019-05-21 10:50:45 +02:00
2019-01-08 21:58:35 -05:00
2019-01-08 21:58:35 -05:00
2019-01-08 21:57:42 -05:00
2019-05-30 11:25:18 -07:00
2019-01-08 21:58:35 -05:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-07-20 10:04:58 -07:00
2019-07-11 15:14:01 -07:00
2019-10-25 20:11:33 -04:00
2019-06-18 19:46:18 -04:00
2019-06-05 17:36:37 +02:00
2019-06-05 17:36:37 +02:00
2019-07-11 15:17:41 -07:00
2017-11-02 11:10:55 +01:00
2019-05-21 11:28:46 +02:00
2020-04-01 11:01:54 +02:00
2020-04-01 11:01:54 +02:00
2018-12-18 23:19:21 -05:00
2018-11-06 21:31:28 -05:00
2020-06-24 17:50:37 +02:00
2020-02-24 08:36:50 +01:00
2019-05-30 11:26:37 -07:00
2019-05-21 10:50:45 +02:00
2020-07-22 09:32:57 +02:00
2019-05-24 17:36:45 +02:00
2019-07-11 15:14:01 -07:00
2019-12-21 11:05:04 +01:00
2019-05-21 10:50:45 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2020-01-04 19:18:10 +01:00
2019-07-17 22:39:27 +09:00
2019-09-23 23:09:42 -04:00
2018-06-19 22:02:25 -04:00
2020-08-19 08:16:15 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2018-12-18 23:13:12 -05:00
2017-11-02 11:10:55 +01:00
2019-07-11 15:17:41 -07:00
2019-05-30 11:26:39 -07:00
2018-12-28 14:48:06 -08:00
2018-10-17 21:06:49 -04:00
2019-05-20 10:56:43 -04:00
2018-10-17 21:07:54 -04:00
2019-08-07 21:53:23 -04:00
2019-05-24 17:36:45 +02:00
2020-01-04 19:18:16 +01:00
2019-06-20 15:37:02 -04:00
2018-06-19 22:02:25 -04:00
2019-05-24 17:39:02 +02:00
2019-05-24 17:39:02 +02:00
2019-08-12 21:57:13 -04:00
2019-05-30 11:26:35 -07:00
2019-06-20 15:21:33 -04:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:38 -07:00
2019-08-16 11:33:56 -07:00
2019-08-16 11:33:56 -07:00
2019-03-19 17:11:37 -04:00
2017-11-02 11:10:55 +01:00
2018-12-18 23:19:21 -05:00
2019-08-07 21:32:53 -04:00
2019-02-13 22:07:03 -05:00
2019-06-05 17:37:17 +02:00
2019-05-24 17:36:45 +02:00
2017-12-11 21:39:39 -05:00
2020-08-19 08:16:11 +02:00
2019-07-30 12:42:55 -04:00
2019-05-21 06:16:21 -04:00
2020-07-29 10:18:27 +02:00
2020-07-29 10:18:27 +02:00
2019-10-03 21:43:04 -04:00
2019-05-21 06:16:21 -04:00
2017-11-02 11:10:55 +01:00
2020-08-05 09:59:50 +02:00
2019-08-07 21:47:29 -04:00
2017-11-14 16:23:44 -08:00
2019-05-30 11:26:35 -07:00
2020-06-07 13:18:50 +02:00
2019-06-18 19:46:17 -04:00
2019-07-30 13:07:42 +02:00
2017-11-02 11:10:55 +01:00
2019-04-15 22:25:00 -04:00
2019-05-30 11:29:53 -07:00
2019-10-17 21:57:09 -04:00
2020-01-23 08:22:59 +01:00
2017-11-02 11:10:55 +01:00
2019-07-11 15:14:01 -07:00
2020-04-29 16:32:59 +02:00
2020-01-23 08:22:58 +01:00
2020-07-29 10:18:26 +02:00
2019-06-19 17:09:56 +02:00
2019-07-11 15:14:01 -07:00
2018-06-19 22:02:25 -04:00
2017-11-02 11:10:55 +01:00
2019-06-05 17:37:14 +02:00
2019-11-05 23:17:53 -05:00
2020-04-01 11:02:01 +02:00
2019-08-04 21:41:29 -06:00
2017-11-02 11:10:55 +01:00
2019-07-11 15:14:01 -07:00
2020-05-20 08:20:07 +02:00
2018-12-18 23:19:21 -05:00
2019-05-24 17:36:45 +02:00
2019-10-09 23:35:42 -04:00
2018-08-02 15:22:13 -06:00
2020-07-22 09:32:57 +02:00
2020-06-24 17:50:19 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-07-11 15:14:01 -07:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:32 -07:00
2020-01-23 08:22:38 +01:00
2020-01-04 19:18:10 +01:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2019-09-10 22:10:17 -04:00
2019-07-11 15:17:41 -07:00
2019-08-07 21:35:59 -04:00
2019-05-24 17:39:02 +02:00
2019-07-11 15:14:01 -07:00
2018-11-15 14:27:08 -05:00
2018-12-18 23:13:12 -05:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00
2020-01-04 19:17:37 +01:00