[SeaBIOS] AHCI: Set transfer mode according to the capabilities of connected drive

Gerd Hoffmann kraxel at redhat.com
Sat Feb 20 15:19:38 CET 2016

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 wrote:
> > Hi Kevin.
> > 
> > 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.


More information about the SeaBIOS mailing list