@ -183,6 +183,9 @@ MODULE_PARM_DESC(exclusive_login, "Exclusive login to sbp2 device "
* Avoids access beyond actual disk limits on devices with an off - by - one bug .
* Don ' t use this with devices which don ' t have this bug .
*
* - delay inquiry
* Wait extra SBP2_INQUIRY_DELAY seconds after login before SCSI inquiry .
*
* - override internal blacklist
* Instead of adding to the built - in blacklist , use only the workarounds
* specified in the module load parameter .
@ -195,6 +198,7 @@ MODULE_PARM_DESC(workarounds, "Work around device bugs (default = 0"
" , 36 byte inquiry = " __stringify ( SBP2_WORKAROUND_INQUIRY_36 )
" , skip mode page 8 = " __stringify ( SBP2_WORKAROUND_MODE_SENSE_8 )
" , fix capacity = " __stringify ( SBP2_WORKAROUND_FIX_CAPACITY )
" , delay inquiry = " __stringify ( SBP2_WORKAROUND_DELAY_INQUIRY )
" , override internal blacklist = " __stringify ( SBP2_WORKAROUND_OVERRIDE )
" , or a combination) " ) ;
@ -357,6 +361,11 @@ static const struct {
. workarounds = SBP2_WORKAROUND_INQUIRY_36 |
SBP2_WORKAROUND_MODE_SENSE_8 ,
} ,
/* DViCO Momobay FX-3A with TSB42AA9A bridge */ {
. firmware_revision = 0x002800 ,
. model_id = 0x000000 ,
. workarounds = SBP2_WORKAROUND_DELAY_INQUIRY ,
} ,
/* Initio bridges, actually only needed for some older ones */ {
. firmware_revision = 0x000200 ,
. model_id = SBP2_ROM_VALUE_WILDCARD ,
@ -914,6 +923,9 @@ static int sbp2_start_device(struct sbp2_lu *lu)
sbp2_agent_reset ( lu , 1 ) ;
sbp2_max_speed_and_size ( lu ) ;
if ( lu - > workarounds & SBP2_WORKAROUND_DELAY_INQUIRY )
ssleep ( SBP2_INQUIRY_DELAY ) ;
error = scsi_add_device ( lu - > shost , 0 , lu - > ud - > id , 0 ) ;
if ( error ) {
SBP2_ERR ( " scsi_add_device failed " ) ;