Andrew Ryder wrote: > For the regular power on detected, are you referring to cold/warm > booting the system and verifying initialization or only power cycling > the 4726? > > Here are my test results, TestingRoutine.txt is the procedure I followed > and test results obtained. If I missed something, please let me know. > > From what I could find, the problem with ata1.03 not being detected is > consistent with the port. In my testing, I moved the last drive to the > 5th port on the 4726 and the problem carried through. The issue seemed > to only occur when the 4726 was powered on/off, not when it was > unplugged and re-plugged with the power on. > > If I have some time on the weekend, I will do a test routine of several > hot un-plugs / re-plugs of the 4726 and see what happens. Thanks a lot for all the testing. Can you please apply the attached patch and see whether things improve? Thanks. -- tejun
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index b4c674d..864c1c1 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c @@ -301,7 +301,7 @@ static struct sil24_cerr_info { [PORT_CERR_PKT_PROT] = { AC_ERR_HSM, ATA_EH_SOFTRESET, "invalid data directon for ATAPI CDB" }, [PORT_CERR_SGT_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_SOFTRESET, - "SGT no on qword boundary" }, + "SGT not on qword boundary" }, [PORT_CERR_SGT_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET, "PCI target abort while fetching SGT" }, [PORT_CERR_SGT_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET, @@ -1094,10 +1094,13 @@ static void sil24_error_intr(struct ata_port *ap) if (ci && ci->desc) { err_mask |= ci->err_mask; action |= ci->action; + if (action & ATA_EH_RESET_MASK) + freeze = 1; ata_ehi_push_desc(ehi, "%s", ci->desc); } else { err_mask |= AC_ERR_OTHER; action |= ATA_EH_SOFTRESET; + freeze = 1; ata_ehi_push_desc(ehi, "unknown command error %d", cerr); }