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);
}