1
0

[SCSI] qla2xxx: Add acquiring of risc semaphore before doing ISP reset.

Try to acquire the semaphore; if semaphore is hung then acquire it by force.
The ISP reset clears the semaphore, thereby implicitly releasing it.

Signed-off-by: Joe Carnuccio <joe.carnuccio@qlogic.com>
Signed-off-by: Saurav Kashyap <saurav.kashyap@qlogic.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
Joe Carnuccio
2012-11-21 02:40:37 -05:00
committed by James Bottomley
parent 807fb6d8af
commit 4ea2c9c7b3
2 changed files with 100 additions and 0 deletions

View File

@@ -1092,6 +1092,27 @@ struct device_reg_24xx {
uint32_t unused_6[2]; /* Gap. */
uint32_t iobase_sdata;
};
/* RISC-RISC semaphore register PCI offet */
#define RISC_REGISTER_BASE_OFFSET 0x7010
#define RISC_REGISTER_WINDOW_OFFET 0x6
/* RISC-RISC semaphore/flag register (risc address 0x7016) */
#define RISC_SEMAPHORE 0x1UL
#define RISC_SEMAPHORE_WE (RISC_SEMAPHORE << 16)
#define RISC_SEMAPHORE_CLR (RISC_SEMAPHORE_WE | 0x0UL)
#define RISC_SEMAPHORE_SET (RISC_SEMAPHORE_WE | RISC_SEMAPHORE)
#define RISC_SEMAPHORE_FORCE 0x8000UL
#define RISC_SEMAPHORE_FORCE_WE (RISC_SEMAPHORE_FORCE << 16)
#define RISC_SEMAPHORE_FORCE_CLR (RISC_SEMAPHORE_FORCE_WE | 0x0UL)
#define RISC_SEMAPHORE_FORCE_SET \
(RISC_SEMAPHORE_FORCE_WE | RISC_SEMAPHORE_FORCE)
/* RISC semaphore timeouts (ms) */
#define TIMEOUT_SEMAPHORE 2500
#define TIMEOUT_SEMAPHORE_FORCE 2000
#define TIMEOUT_TOTAL_ELAPSED 4500
/* Trace Control *************************************************************/