|
@@ -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");
|