* [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework
@ 2021-08-20 9:54 Hannes Reinecke
2021-08-20 9:54 ` [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus() Hannes Reinecke
` (4 more replies)
0 siblings, 5 replies; 9+ messages in thread
From: Hannes Reinecke @ 2021-08-20 9:54 UTC (permalink / raw)
To: Martin K. Petersen
Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke
Hi all,
with the SCSI EH rework the scsi_cmnd argument for the SCSI EH
callbacks is going away, so we need to fixup the drivers to work
without it.
This patchset modifies the ncr53c8xx driver to not rely on a
specific command for the SCSI EH callbacks.
As usual, comments and reviews are welcome.
Hannes Reinecke (3):
ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus()
ncr53c8xx: Complete all commands during bus reset
ncr53c8xx: Remove unused code
drivers/scsi/ncr53c8xx.c | 199 +--------------------------------------
1 file changed, 2 insertions(+), 197 deletions(-)
--
2.29.2
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus()
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
@ 2021-08-20 9:54 ` Hannes Reinecke
2021-08-20 9:55 ` Christoph Hellwig
2021-08-20 9:54 ` [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset Hannes Reinecke
` (3 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Hannes Reinecke @ 2021-08-20 9:54 UTC (permalink / raw)
To: Martin K. Petersen
Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke
From: Hannes Reinecke <hare@suse.com>
Always '1', so we can remove it.
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/ncr53c8xx.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index c76e9f05d042..3d2daaf2368c 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -4553,7 +4553,7 @@ static void ncr_start_reset(struct ncb *np)
**
**==========================================================
*/
-static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd, int sync_reset)
+static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd)
{
/* struct scsi_device *device = cmd->device; */
struct ccb *cp;
@@ -4600,11 +4600,10 @@ static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd, int sync_reset)
ncr_wakeup(np, HS_RESET);
/*
* If the involved command was not in a driver queue, and the
- * scsi driver told us reset is synchronous, and the command is not
- * currently in the waiting list, complete it with DID_RESET status,
- * in order to keep it alive.
+ * command is not currently in the waiting list, complete it
+ * with DID_RESET status in order to keep it alive.
*/
- if (!found && sync_reset && !retrieve_from_waiting_list(0, np, cmd)) {
+ if (!found && !retrieve_from_waiting_list(0, np, cmd)) {
set_host_byte(cmd, DID_RESET);
ncr_queue_done_cmd(np, cmd);
}
@@ -8125,7 +8124,7 @@ static int ncr53c8xx_bus_reset(struct scsi_cmnd *cmd)
*/
spin_lock_irqsave(&np->smp_lock, flags);
- sts = ncr_reset_bus(np, cmd, 1);
+ sts = ncr_reset_bus(np, cmd);
done_list = np->done_list;
np->done_list = NULL;
--
2.29.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
2021-08-20 9:54 ` [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus() Hannes Reinecke
@ 2021-08-20 9:54 ` Hannes Reinecke
2021-08-20 9:55 ` Christoph Hellwig
2021-08-20 9:54 ` [PATCH 3/3] ncr53c8xx: Remove unused code Hannes Reinecke
` (2 subsequent siblings)
4 siblings, 1 reply; 9+ messages in thread
From: Hannes Reinecke @ 2021-08-20 9:54 UTC (permalink / raw)
To: Martin K. Petersen
Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke
From: Hannes Reinecke <hare@suse.com>
ncr_reset_bus() will complete all outstanding commands anyway, so
there's no need to single out a specific command.
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/ncr53c8xx.c | 35 ++---------------------------------
1 file changed, 2 insertions(+), 33 deletions(-)
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 3d2daaf2368c..1c1f5df83dca 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -4553,12 +4553,8 @@ static void ncr_start_reset(struct ncb *np)
**
**==========================================================
*/
-static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd)
+static int ncr_reset_bus (struct ncb *np)
{
-/* struct scsi_device *device = cmd->device; */
- struct ccb *cp;
- int found;
-
/*
* Return immediately if reset is in progress.
*/
@@ -4572,24 +4568,6 @@ static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd)
* delay of 2 seconds will be completed.
*/
ncr_start_reset(np);
-/*
- * First, look in the wakeup list
- */
- for (found=0, cp=np->ccb; cp; cp=cp->link_ccb) {
- /*
- ** look for the ccb of this command.
- */
- if (cp->host_status == HS_IDLE) continue;
- if (cp->cmd == cmd) {
- found = 1;
- break;
- }
- }
-/*
- * Then, look in the waiting list
- */
- if (!found && retrieve_from_waiting_list(0, np, cmd))
- found = 1;
/*
* Wake-up all awaiting commands with DID_RESET.
*/
@@ -4598,15 +4576,6 @@ static int ncr_reset_bus (struct ncb *np, struct scsi_cmnd *cmd)
* Wake-up all pending commands with HS_RESET -> DID_RESET.
*/
ncr_wakeup(np, HS_RESET);
-/*
- * If the involved command was not in a driver queue, and the
- * command is not currently in the waiting list, complete it
- * with DID_RESET status in order to keep it alive.
- */
- if (!found && !retrieve_from_waiting_list(0, np, cmd)) {
- set_host_byte(cmd, DID_RESET);
- ncr_queue_done_cmd(np, cmd);
- }
return SUCCESS;
}
@@ -8124,7 +8093,7 @@ static int ncr53c8xx_bus_reset(struct scsi_cmnd *cmd)
*/
spin_lock_irqsave(&np->smp_lock, flags);
- sts = ncr_reset_bus(np, cmd);
+ sts = ncr_reset_bus(np);
done_list = np->done_list;
np->done_list = NULL;
--
2.29.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH 3/3] ncr53c8xx: Remove unused code
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
2021-08-20 9:54 ` [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus() Hannes Reinecke
2021-08-20 9:54 ` [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset Hannes Reinecke
@ 2021-08-20 9:54 ` Hannes Reinecke
2021-08-20 9:56 ` Christoph Hellwig
2021-08-24 3:18 ` [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Martin K. Petersen
2021-08-28 2:32 ` Martin K. Petersen
4 siblings, 1 reply; 9+ messages in thread
From: Hannes Reinecke @ 2021-08-20 9:54 UTC (permalink / raw)
To: Martin K. Petersen
Cc: Christoph Hellwig, James Bottomley, linux-scsi, Hannes Reinecke
From: Hannes Reinecke <hare@suse.com>
Signed-off-by: Hannes Reinecke <hare@suse.com>
---
drivers/scsi/ncr53c8xx.c | 163 ---------------------------------------
1 file changed, 163 deletions(-)
diff --git a/drivers/scsi/ncr53c8xx.c b/drivers/scsi/ncr53c8xx.c
index 1c1f5df83dca..e7115cba4b28 100644
--- a/drivers/scsi/ncr53c8xx.c
+++ b/drivers/scsi/ncr53c8xx.c
@@ -1453,11 +1453,6 @@ struct head {
#define xerr_status phys.xerr_st
#define nego_status phys.nego_st
-#if 0
-#define sync_status phys.sync_st
-#define wide_status phys.wide_st
-#endif
-
/*==========================================================
**
** Declaration of structs: Data structure block
@@ -1980,9 +1975,6 @@ static inline char *ncr_name (struct ncb *np)
#define RELOC_SOFTC 0x40000000
#define RELOC_LABEL 0x50000000
#define RELOC_REGISTER 0x60000000
-#if 0
-#define RELOC_KVAR 0x70000000
-#endif
#define RELOC_LABELH 0x80000000
#define RELOC_MASK 0xf0000000
@@ -1991,21 +1983,7 @@ static inline char *ncr_name (struct ncb *np)
#define PADDRH(label) (RELOC_LABELH | offsetof(struct scripth, label))
#define RADDR(label) (RELOC_REGISTER | REG(label))
#define FADDR(label,ofs)(RELOC_REGISTER | ((REG(label))+(ofs)))
-#if 0
-#define KVAR(which) (RELOC_KVAR | (which))
-#endif
-#if 0
-#define SCRIPT_KVAR_JIFFIES (0)
-#define SCRIPT_KVAR_FIRST SCRIPT_KVAR_JIFFIES
-#define SCRIPT_KVAR_LAST SCRIPT_KVAR_JIFFIES
-/*
- * Kernel variables referenced in the scripts.
- * THESE MUST ALL BE ALIGNED TO A 4-BYTE BOUNDARY.
- */
-static void *script_kvars[] __initdata =
- { (void *)&jiffies };
-#endif
static struct script script0 __initdata = {
/*--------------------------< START >-----------------------*/ {
@@ -2162,11 +2140,6 @@ static struct script script0 __initdata = {
SCR_COPY (1),
RADDR (scratcha),
NADDR (msgout),
-#if 0
- SCR_COPY (1),
- RADDR (scratcha),
- NADDR (msgin),
-#endif
/*
** Anticipate the COMMAND phase.
** This is the normal case for initial selection.
@@ -4378,10 +4351,6 @@ static int ncr_queue_command (struct ncb *np, struct scsi_cmnd *cmd)
cp->parity_status = 0;
cp->xerr_status = XE_OK;
-#if 0
- cp->sync_status = tp->sval;
- cp->wide_status = tp->wval;
-#endif
/*----------------------------------------------------
**
@@ -4580,89 +4549,6 @@ static int ncr_reset_bus (struct ncb *np)
return SUCCESS;
}
-#if 0 /* unused and broken.. */
-/*==========================================================
-**
-**
-** Abort an SCSI command.
-** This is called from the generic SCSI driver.
-**
-**
-**==========================================================
-*/
-static int ncr_abort_command (struct ncb *np, struct scsi_cmnd *cmd)
-{
-/* struct scsi_device *device = cmd->device; */
- struct ccb *cp;
- int found;
- int retv;
-
-/*
- * First, look for the scsi command in the waiting list
- */
- if (remove_from_waiting_list(np, cmd)) {
- set_host_byte(cmd, DID_ABORT);
- ncr_queue_done_cmd(np, cmd);
- return SCSI_ABORT_SUCCESS;
- }
-
-/*
- * Then, look in the wakeup list
- */
- for (found=0, cp=np->ccb; cp; cp=cp->link_ccb) {
- /*
- ** look for the ccb of this command.
- */
- if (cp->host_status == HS_IDLE) continue;
- if (cp->cmd == cmd) {
- found = 1;
- break;
- }
- }
-
- if (!found) {
- return SCSI_ABORT_NOT_RUNNING;
- }
-
- if (np->settle_time) {
- return SCSI_ABORT_SNOOZE;
- }
-
- /*
- ** If the CCB is active, patch schedule jumps for the
- ** script to abort the command.
- */
-
- switch(cp->host_status) {
- case HS_BUSY:
- case HS_NEGOTIATE:
- printk ("%s: abort ccb=%p (cancel)\n", ncr_name (np), cp);
- cp->start.schedule.l_paddr =
- cpu_to_scr(NCB_SCRIPTH_PHYS (np, cancel));
- retv = SCSI_ABORT_PENDING;
- break;
- case HS_DISCONNECT:
- cp->restart.schedule.l_paddr =
- cpu_to_scr(NCB_SCRIPTH_PHYS (np, abort));
- retv = SCSI_ABORT_PENDING;
- break;
- default:
- retv = SCSI_ABORT_NOT_RUNNING;
- break;
-
- }
-
- /*
- ** If there are no requests, the script
- ** processor will sleep on SEL_WAIT_RESEL.
- ** Let's wake it up, since it may have to work.
- */
- OUTB (nc_istat, SIGP);
-
- return retv;
-}
-#endif
-
static void ncr_detach(struct ncb *np)
{
struct ccb *cp;
@@ -5421,27 +5307,6 @@ static void ncr_getsync(struct ncb *np, u_char sfac, u_char *fakp, u_char *scntl
*/
fak = (kpc - 1) / div_10M[div] + 1;
-#if 0 /* This optimization does not seem very useful */
-
- per = (fak * div_10M[div]) / clk;
-
- /*
- ** Why not to try the immediate lower divisor and to choose
- ** the one that allows the fastest output speed ?
- ** We don't want input speed too much greater than output speed.
- */
- if (div >= 1 && fak < 8) {
- u_long fak2, per2;
- fak2 = (kpc - 1) / div_10M[div-1] + 1;
- per2 = (fak2 * div_10M[div-1]) / clk;
- if (per2 < per && fak2 <= 8) {
- fak = fak2;
- per = per2;
- --div;
- }
- }
-#endif
-
if (fak < 4) fak = 4; /* Should never happen, too bad ... */
/*
@@ -5479,10 +5344,6 @@ static void ncr_set_sync_wide_status (struct ncb *np, u_char target)
for (cp = np->ccb; cp; cp = cp->link_ccb) {
if (!cp->cmd) continue;
if (scmd_id(cp->cmd) != target) continue;
-#if 0
- cp->sync_status = tp->sval;
- cp->wide_status = tp->wval;
-#endif
cp->phys.select.sel_scntl3 = tp->wval;
cp->phys.select.sel_sxfer = tp->sval;
}
@@ -8104,30 +7965,6 @@ static int ncr53c8xx_bus_reset(struct scsi_cmnd *cmd)
return sts;
}
-#if 0 /* unused and broken */
-static int ncr53c8xx_abort(struct scsi_cmnd *cmd)
-{
- struct ncb *np = ((struct host_data *) cmd->device->host->hostdata)->ncb;
- int sts;
- unsigned long flags;
- struct scsi_cmnd *done_list;
-
- printk("ncr53c8xx_abort\n");
-
- NCR_LOCK_NCB(np, flags);
-
- sts = ncr_abort_command(np, cmd);
-out:
- done_list = np->done_list;
- np->done_list = NULL;
- NCR_UNLOCK_NCB(np, flags);
-
- ncr_flush_done_cmds(done_list);
-
- return sts;
-}
-#endif
-
/*
** Scsi command waiting list management.
--
2.29.2
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus()
2021-08-20 9:54 ` [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus() Hannes Reinecke
@ 2021-08-20 9:55 ` Christoph Hellwig
0 siblings, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2021-08-20 9:55 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
linux-scsi, Hannes Reinecke
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset
2021-08-20 9:54 ` [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset Hannes Reinecke
@ 2021-08-20 9:55 ` Christoph Hellwig
0 siblings, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2021-08-20 9:55 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
linux-scsi, Hannes Reinecke
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 3/3] ncr53c8xx: Remove unused code
2021-08-20 9:54 ` [PATCH 3/3] ncr53c8xx: Remove unused code Hannes Reinecke
@ 2021-08-20 9:56 ` Christoph Hellwig
0 siblings, 0 replies; 9+ messages in thread
From: Christoph Hellwig @ 2021-08-20 9:56 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley,
linux-scsi, Hannes Reinecke
Looks good,
Reviewed-by: Christoph Hellwig <hch@lst.de>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
` (2 preceding siblings ...)
2021-08-20 9:54 ` [PATCH 3/3] ncr53c8xx: Remove unused code Hannes Reinecke
@ 2021-08-24 3:18 ` Martin K. Petersen
2021-08-28 2:32 ` Martin K. Petersen
4 siblings, 0 replies; 9+ messages in thread
From: Martin K. Petersen @ 2021-08-24 3:18 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K. Petersen, Christoph Hellwig, James Bottomley, linux-scsi
Hannes,
> with the SCSI EH rework the scsi_cmnd argument for the SCSI EH
> callbacks is going away, so we need to fixup the drivers to work
> without it.
>
> This patchset modifies the ncr53c8xx driver to not rely on a
> specific command for the SCSI EH callbacks.
Applied to 5.15/scsi-staging, thanks!
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
` (3 preceding siblings ...)
2021-08-24 3:18 ` [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Martin K. Petersen
@ 2021-08-28 2:32 ` Martin K. Petersen
4 siblings, 0 replies; 9+ messages in thread
From: Martin K. Petersen @ 2021-08-28 2:32 UTC (permalink / raw)
To: Hannes Reinecke
Cc: Martin K . Petersen, linux-scsi, James Bottomley, Christoph Hellwig
On Fri, 20 Aug 2021 11:54:02 +0200, Hannes Reinecke wrote:
> with the SCSI EH rework the scsi_cmnd argument for the SCSI EH
> callbacks is going away, so we need to fixup the drivers to work
> without it.
>
> This patchset modifies the ncr53c8xx driver to not rely on a
> specific command for the SCSI EH callbacks.
>
> [...]
Applied to 5.15/scsi-queue, thanks!
[1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus()
https://git.kernel.org/mkp/scsi/c/227a13cf12f9
[2/3] ncr53c8xx: Complete all commands during bus reset
https://git.kernel.org/mkp/scsi/c/f434e4984f5f
[3/3] ncr53c8xx: Remove unused code
https://git.kernel.org/mkp/scsi/c/1c22e327545c
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-08-28 2:32 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-20 9:54 [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Hannes Reinecke
2021-08-20 9:54 ` [PATCH 1/3] ncr53c8xx: remove 'sync_reset' argument from ncr_reset_bus() Hannes Reinecke
2021-08-20 9:55 ` Christoph Hellwig
2021-08-20 9:54 ` [PATCH 2/3] ncr53c8xx: Complete all commands during bus reset Hannes Reinecke
2021-08-20 9:55 ` Christoph Hellwig
2021-08-20 9:54 ` [PATCH 3/3] ncr53c8xx: Remove unused code Hannes Reinecke
2021-08-20 9:56 ` Christoph Hellwig
2021-08-24 3:18 ` [PATCH 0/3] ncr53c8xx: Fixes for SCSI EH rework Martin K. Petersen
2021-08-28 2:32 ` Martin K. Petersen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.