Asus K8V Deluxe VIA SATA RAID power management problem
I have noticed that when I suspend my system, on resume the via_sata driver complains about an unexpected status of 0x80 in register 0xE000, then seems to fail the first IO request to the disk, then times out, and then seems to recover. Usually this causes the resume script to fail to execute, as the failed IO seems to fill the buffer cache with zeros instead of retrying the operation, and the kernel fails to execute a binary that starts with zeros. I have noticed that if I manually echo mem > /sys/power/state, when the system resumes and no IO is performed for a few seconds, these errors do not happen.
This leads me to believe that the sata controller simply needs a bit of time after the resume to completely reset before it can be accessed. The question is, where does this delay belong? From reading the ACPI specifications, it looks like it is up to the driver to call _GTF to get the state of the controller before suspending, and then to restore that state after resume. Does the via_sata driver call some code to do this, and should the delay be after restoring the registers? Or is there an ASL routine in the DSDT that is called when restoring that I should add a delay to?
-------------------------------------------------------
SF.Net email is sponsored by:
Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php
I have determined that after the resume, the controller requires an extended period of time before it is ready for use. The errors I was getting were due to the driver waiting for the busy bit in the status register to clear, and it did not before the wait timed out. I worked around the problem by extending the timeout by a factor of 100, but this does not seem like an appropriate fix.
Is there maybe a method in the DSDT that is called during resume where I could make it wait for the controller to be ready?
Quoted 9 lines · Luming
Quoted 2 lines · Phillip Susi
I have noticed that when I suspend my system, on resume the
via_satadriver complains about an unexpected status of0x80in register0xE000,What does
0x80mean? What is register0xE000for?
I think you need to figure them out from spec.Thanks,
Luming
-------------------------------------------------------
This SF.Net email is sponsored by the JBoss Inc. Get Certified Today Register for a JBoss Training Course. Free Certification Exam for All Training Attendees Through End of 2005. For more info visit:
http://ads.osdn.com/?ad_id=7628&alloc_id=16845&op=click