Sorry, I tested it again and tried it on 4 ports. It only works on 1st and 4th ports, while doesn't work on 2nd and 3rd ports. It loops at driver no longer selected after 10ms, retrying init driver no longer selected after 10ms, retrying init driver no longer selected after 10ms, retrying init driver no longer selected after 10ms, retrying init driver no longer selected after 10ms, retrying init
My SATA drive is 250 GB Seagate Barracuda ST3250620NS.
Zheng
-----Original Message----- From: Carl-Daniel Hailfinger [mailto:c-d.hailfinger.devel.2006@gmx.net] Sent: Tuesday, December 23, 2008 12:01 PM To: Bao, Zheng Cc: Coreboot Subject: Re: [coreboot] [PATCH] Fix SB600 SATA and add support for port 2-4
On 23.12.2008 04:51, Bao, Zheng wrote:
In sata_drive_detect(), the loop seems to be loop forever if detection is not completed. Does the "i" have a timeout value?
No, there is no timeout. "i" was there to tell me how long it takes, but I can use it to check for a timeout. I will fix this.
Some indents are actually several spaces instead of tab. Please note this.
Thanks for telling me. I will clean up and resend. Some indents have tabs and spaces to have exact indentation at the beginning of the parentheses.
Regards, Carl-Daniel
Zheng
-----Original Message----- From: Carl-Daniel Hailfinger
[mailto:c-d.hailfinger.devel.2006@gmx.net]
Sent: Tuesday, December 23, 2008 10:37 AM To: Bao, Zheng Cc: Coreboot Subject: Re: [PATCH] Fix SB600 SATA and add support for port 2-4
Hi Zheng,
On 23.12.2008 03:26, Bao, Zheng wrote:
Reviewed-by: zheng bao zheng.bao@amd.com
It is tested well on dbm690t and pistachio.
Thank you for the fast review!
Our commit process is a bit difficult because it needs an Acked-by: statement. (The subversion repository will reject a commit without Acked-by.)
Everybody who understands the code is allowed to ack a patch. You understand that piece of code very well, so could you please also add
an
Acked-by statement? Thanks!
Regards, Carl-Daniel
-----Original Message----- From: Carl-Daniel Hailfinger
[mailto:c-d.hailfinger.devel.2006@gmx.net]
Sent: Tuesday, December 23, 2008 10:01 AM To: Coreboot Cc: Bao, Zheng Subject: [PATCH] Fix SB600 SATA and add support for port 2-4
The SB600 RPR documentation does not mention what to do if
SATA_BAR0+6
is no longer 0xA0 or 0xB0. It simply assumes that will never happen. My 500 GB Seagate Barracuda ST3500820AS triggers that corner case on
the
first init after poweron. The current code hangs forever with my drive. Fix this by rerunning
the
init sequence after SATA_BAR0+6 is no longer 0xA0 or 0xB0.
Add support for SATA port 2-4 (Primary Slave, Secondary Master, Secondary Slave).
Activate and improve debug messages for SPEW log level.
Fix some comments.
New log messages look like this: PCI: 00:12.0 init sata_bar0=3020 sata_bar1=3060 sata_bar2=3030 sata_bar3=3070 sata_bar4=3000 sata_bar5=fc309000 SATA port 0 status = 23 0x6=a0, 0x7=80 drive detection not yet completed, waiting... 0x6=a0, 0x7=80 drive detection not yet completed, waiting... [... 281 repetitions ...] 0x6=0, 0x7=50 drive no longer selected after 2830 ms, retrying init drive detection done after 10 ms Primary Master device is ready SATA port 1 status = 23 drive detection done after 10 ms Primary Slave device is ready SATA port 2 status = 0 No Secondary Master SATA drive on Slot2 SATA port 3 status = 0 No Secondary Slave SATA drive on Slot3
Full log is attached.
With this patch (and my other non-SATA fixups), my Asus M2A-VM boots into Linux without problems.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net