On Fr, 2016-02-19 at 21:18 -0500, Kevin O'Connor wrote:
On Mon, Feb 15, 2016 at 12:00:48PM +0000, Zeh, Werner
We had some issues with some connected AHCI devices in SeaBIOS. We
have connected some CF-Cards by using a simple SATA<->IDE bridge to
the mainboard and in some cases, the drive (which is the CF-card)
was not recognized correctly. After some deeper analysis we found
that SeaBIOS does not set up the transfer rate which is used to
communicate to the drive. The supported transfer rate can be found
in the data structure which is delivered by IDENTIFY_DEVICE command.
So in our error cases the default transfer rate was too high and
therefore data error has occurred. I have attached a patch which
will deal with this case on AHCI controllers. Maybe you can push
this patch to mainline or at least have a look at it.
Up to now I have verified the function of this patch with the latest
master branch of SeaBIOS and a Broadwell-DE CPU. I have used PIO4,
default PIO, Multiword-DMA2 and several Ultra-DMA CF-cards to ensure
that all three paths work properly.
BTW: I am not that familiar with code style in SeaBIOS. If I made
some formal mistakes, feel free to correct them.
Thanks. I'm not that familiar with the AHCI internals. Gerd, would
you be able to review?
Patch looks good to me. Applied some tweaks, mostly cosmetically. The
only functional change is that multi_dma and pio modes are checked even
if the udma bit (bit 2 word 53) is set, just in case none of the bits in
word 88 is set. Updated patch will go to the list in a moment.