Re: [PATCH 05/10] esp_scsi: read status registers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 21/11/2014 10:27, Hannes Reinecke wrote:
> A read to ESP_INTRPT will clear ESP_STATUS and ESP_SSTEP. So read
> all status registers in one go to avoid losing information.

(ESP_STAT_TCNT is actually kept in the status register, it is cleared by
writing TCLO/MID/HI).

Reviewed-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>

> Signed-off-by: Hannes Reinecke <hare@xxxxxxx>
> ---
>  drivers/scsi/esp_scsi.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/scsi/esp_scsi.c b/drivers/scsi/esp_scsi.c
> index fe3278e..92ab921 100644
> --- a/drivers/scsi/esp_scsi.c
> +++ b/drivers/scsi/esp_scsi.c
> @@ -982,7 +982,6 @@ static int esp_check_spur_intr(struct esp *esp)
>  
>  	default:
>  		if (!(esp->sreg & ESP_STAT_INTR)) {
> -			esp->ireg = esp_read8(ESP_INTRPT);
>  			if (esp->ireg & ESP_INTR_SR)
>  				return 1;
>  
> @@ -2056,7 +2055,12 @@ static void __esp_interrupt(struct esp *esp)
>  	int finish_reset, intr_done;
>  	u8 phase;
>  
> +       /*
> +	* Once INTRPT is read STATUS and SSTEP are cleared.
> +	*/
>  	esp->sreg = esp_read8(ESP_STATUS);
> +	esp->seqreg = esp_read8(ESP_SSTEP);
> +	esp->ireg = esp_read8(ESP_INTRPT);
>  
>  	if (esp->flags & ESP_FLAG_RESETTING) {
>  		finish_reset = 1;
> @@ -2069,8 +2073,6 @@ static void __esp_interrupt(struct esp *esp)
>  			return;
>  	}
>  
> -	esp->ireg = esp_read8(ESP_INTRPT);
> -
>  	if (esp->ireg & ESP_INTR_SR)
>  		finish_reset = 1;
>  
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux