I increased the delay step by step until loading of mvsas reliably detected the drive 200 times in sequence. A much better approach would be to monitor the hardware for some flag which indicates that port detection has finished, but I do not have any hardware documentation. BTW: patch is against git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.27.y.git Signed-off-by: Reinhard Nissl <rnissl@xxxxxx>
diff --git a/drivers/scsi/mvsas.c b/drivers/scsi/mvsas.c index 1dd70d7..23e5a87 100644 --- a/drivers/scsi/mvsas.c +++ b/drivers/scsi/mvsas.c @@ -2959,7 +2959,7 @@ static int __devinit mvs_hw_init(struct mvs_info *mvi) /* enable auto port detection */ mw32(GBL_PORT_TYPE, MODE_AUTO_DET_EN); - msleep(100); + msleep(1100); /* init and reset phys */ for (i = 0; i < mvi->chip->n_phy; i++) { u32 lo = be32_to_cpu(*(u32 *)&mvi->sas_addr[4]);