Matthew Garrett (mjg59) wrote,
Matthew Garrett

Modern Intel SATA chipsets (anything from the ICH6m onwards) can be driven in two modes - one that looks awfully like an old-fashioned PATA controller, and one that conforms to the AHCI specification. Windows deals badly with AHCI, so BIOS authors tend to program them to PIIX mode. Some BIOSes have an option to let you choose which is used, but most don't so you end up stuck with PIIX mode.

This is a bit of a shame, since AHCI supports functionality that isn't really present in PIIX mode. For laptop users, one of the more interesting features is AHCI's link-level power saving. At the cost of some performance, it's possible to save 0.5W or so. There are patches beginning to appear for this, but it's no help to people stuck with PIIX support. Over the past couple of days I've been looking into what's necessary to reprogram the chipset into AHCI mode. The biggest issue is finding some MMIO space for the AHCI registers. Most BIOS authors don't program the AHCI base address register, which means trying to find some spare address space to map it. I've hacked support for this into the PCI layer and added a quirk that attempts to reprogram chips into AHCI mode. It's not really ready for proper use yet, but it'd be good to get some amount of testing to see if there are obvious issues. The code is here and ought to apply to current git. Obviously, you'll need ahci support in your kernel.
Tags: advogato, ubuntu

Comments for this post were locked by the author