* [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 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