Re: [PATCH 15/71] ncr5380: Always escalate bad target time-out in NCR5380_select()

2015-11-19 Thread Hannes Reinecke
On 11/18/2015 09:35 AM, Finn Thain wrote:
> Remove the restart_select and targets_present variables introduced in
> Linux v1.1.38. The former was used only for a questionable debug printk
> and the latter "so we can call a select failure a retryable condition".
> Well, retrying select failure in general is a different problem to a
> target that doesn't assert BSY. We need to handle these two cases
> differently; the latter case can be left to the SCSI ML.
> 
> Signed-off-by: Finn Thain 
> 
> ---
>  drivers/scsi/NCR5380.c   |   13 -
>  drivers/scsi/NCR5380.h   |6 --
>  drivers/scsi/atari_NCR5380.c |   13 -
>  3 files changed, 32 deletions(-)
> 
Reviewed-by: Hannes Reinecke 

Cheers,

Hannes
-- 
Dr. Hannes ReineckezSeries & Storage
h...@suse.de   +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
HRB 21284 (AG Nürnberg)
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 15/71] ncr5380: Always escalate bad target time-out in NCR5380_select()

2015-11-18 Thread Finn Thain
Remove the restart_select and targets_present variables introduced in
Linux v1.1.38. The former was used only for a questionable debug printk
and the latter "so we can call a select failure a retryable condition".
Well, retrying select failure in general is a different problem to a
target that doesn't assert BSY. We need to handle these two cases
differently; the latter case can be left to the SCSI ML.

Signed-off-by: Finn Thain 

---
 drivers/scsi/NCR5380.c   |   13 -
 drivers/scsi/NCR5380.h   |6 --
 drivers/scsi/atari_NCR5380.c |   13 -
 3 files changed, 32 deletions(-)

Index: linux/drivers/scsi/NCR5380.c
===
--- linux.orig/drivers/scsi/NCR5380.c   2015-11-18 19:33:20.0 +1100
+++ linux/drivers/scsi/NCR5380.c2015-11-18 19:33:21.0 +1100
@@ -790,7 +790,6 @@ static int NCR5380_init(struct Scsi_Host
 #ifdef REAL_DMA
hostdata->dmalen = 0;
 #endif
-   hostdata->targets_present = 0;
hostdata->connected = NULL;
hostdata->issue_queue = NULL;
hostdata->disconnected_queue = NULL;
@@ -1186,8 +1185,6 @@ static int NCR5380_select(struct Scsi_Ho
if (hostdata->selecting)
goto part2;
 
-   hostdata->restart_select = 0;
-
NCR5380_dprint(NDEBUG_ARBITRATION, instance);
dprintk(NDEBUG_ARBITRATION, "scsi%d : starting arbitration, id = %d\n", 
instance->host_no, instance->this_id);
 
@@ -1363,21 +1360,12 @@ part2:
 
if (!(NCR5380_read(STATUS_REG) & SR_BSY)) {
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
-   if (hostdata->targets_present & (1 << scmd_id(cmd))) {
-   printk(KERN_DEBUG "scsi%d : weirdness\n", 
instance->host_no);
-   if (hostdata->restart_select)
-   printk(KERN_DEBUG "\trestart select\n");
-   NCR5380_dprint(NDEBUG_SELECTION, instance);
-   NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
-   return -1;
-   }
cmd->result = DID_BAD_TARGET << 16;
cmd->scsi_done(cmd);
NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
dprintk(NDEBUG_SELECTION, "scsi%d : target did not respond 
within 250ms\n", instance->host_no);
return 0;
}
-   hostdata->targets_present |= (1 << scmd_id(cmd));
 
/*
 * Since we followed the SCSI spec, and raised ATN while SEL 
@@ -2382,7 +2370,6 @@ static void NCR5380_reselect(struct Scsi
 */
 
NCR5380_write(MODE_REG, MR_BASE);
-   hostdata->restart_select = 1;
 
target_mask = NCR5380_read(CURRENT_SCSI_DATA_REG) & 
~(hostdata->id_mask);
dprintk(NDEBUG_SELECTION, "scsi%d : reselect\n", instance->host_no);
Index: linux/drivers/scsi/atari_NCR5380.c
===
--- linux.orig/drivers/scsi/atari_NCR5380.c 2015-11-18 19:33:20.0 
+1100
+++ linux/drivers/scsi/atari_NCR5380.c  2015-11-18 19:33:21.0 +1100
@@ -826,7 +826,6 @@ static int __init NCR5380_init(struct Sc
 #if defined (REAL_DMA)
hostdata->dma_len = 0;
 #endif
-   hostdata->targets_present = 0;
hostdata->connected = NULL;
hostdata->issue_queue = NULL;
hostdata->disconnected_queue = NULL;
@@ -1409,7 +1408,6 @@ static int NCR5380_select(struct Scsi_Ho
unsigned long timeout;
unsigned long flags;
 
-   hostdata->restart_select = 0;
NCR5380_dprint(NDEBUG_ARBITRATION, instance);
dprintk(NDEBUG_ARBITRATION, "scsi%d: starting arbitration, id = %d\n", 
HOSTNO,
   instance->this_id);
@@ -1625,14 +1623,6 @@ static int NCR5380_select(struct Scsi_Ho
 
if (!(NCR5380_read(STATUS_REG) & SR_BSY)) {
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
-   if (hostdata->targets_present & (1 << cmd->device->id)) {
-   printk(KERN_ERR "scsi%d: weirdness\n", HOSTNO);
-   if (hostdata->restart_select)
-   printk(KERN_NOTICE "\trestart select\n");
-   NCR5380_dprint(NDEBUG_ANY, instance);
-   NCR5380_write(SELECT_ENABLE_REG, hostdata->id_mask);
-   return -1;
-   }
cmd->result = DID_BAD_TARGET << 16;
 #ifdef SUPPORT_TAGS
cmd_free_tag(cmd);
@@ -1643,8 +1633,6 @@ static int NCR5380_select(struct Scsi_Ho
return 0;
}
 
-   hostdata->targets_present |= (1 << cmd->device->id);
-
/*
 * Since we followed the SCSI spec, and raised ATN while SEL
 * was true but before BSY was false during selection, the information
@@ -2605,7 +2593,6 @@ static void NCR5380_reselect(struct Scsi
 */