← Back to team overview

mactel-support team mailing list archive

[Bug 817017] Re: AHCI mode not restored during sleep-wakeup cycle

 

Thanks!
> And this is in drivers/pci/pci-driver.c. Note that I have swapped the fixup and resume.
> [...]
I see your reservation concerning the changes here...  we are not going to get that upstream: there could be side-effects with other quirks.

I have a different suggestion which is hooked in a little bit earlier, but does not require changes in pci-driver.c: instead of starting to handle the "wrong" device and change it into the "correct" one, this patch will put the SATA controller into the desired mode *before* the PCI subsystem  sees it.
My patch uses a kernel command parameter too, but also registers the mode of the SATA device controller during startup (e.g. if someone has set it into AHCI via grub2). Resume should be handled correctly in any case (see the comments for details).

I put this yesterday in place and tested it a few times: seems to work fine for me. It should be easy to handle the other devices for iMac 8,1 and 11,1 too - for now I tested only my MBP 6,2.
Note that the patch is nearly upstream-ready, but I want to test it a few weeks/months before actual submission.

> IIRC, earlier MBP's required a 0x40 instead of a 0x60 written to config word 0x90.
That's chipset specific. I guess 0x60 will not harm where previously 0x40 "was required" (of course it's best to look it up in the datasheets). Bit 6 is the important part (AHCI mode) - bit 5 (6 SATA ports instead of 2 on controller 1) is a suggestion from the Intel 5 series datasheet and may be reserved/unused in previous chipsets.

** Patch added: "i5s_3400s_ahci_handling_for_incapable_efi.patch"
   https://bugs.launchpad.net/mactel-support/+bug/817017/+attachment/2238201/+files/i5s_3400s_ahci_handling_for_incapable_efi.patch

** Changed in: mactel-support
     Assignee: (unassigned) => Bernhard Froemel (froemel)

** Changed in: mactel-support
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Mactel
Support, which is the registrant for Mactel Support.
https://bugs.launchpad.net/bugs/817017

Title:
  AHCI mode not restored during sleep-wakeup cycle

Status in Mactel Support:
  In Progress

Bug description:
  The SATA controller operates by default in IDE mode and there is no known EFI setting to override this behavior. Fortunately, it can be put into AHCI mode before the Linux kernel is booted (e.g. by Grub2 *) ).
  SSD disks perform much better in AHCI mode. On my laptop, both Intel SSD 320 and a Cruzial RealSSD C300 performed great in the beginning, but system responsiveness degraded soon to a point where system load was around 6 to 7 during updates (apt-get dist-upgrade) and second long freezes during normal work (e.g. browsing, responding to emails, heck - even when using vim in a terminal! ...).

  Unfortunately there is a drawback when putting the SATA controller into AHCI mode: AHCI is not restored during sleep-wakeup cycles and thus the system crashes badly after wakeup, because it suddently finds only an IDE controller.
  We need to patch (e.g. the SATA driver?) and check which mode the controller had been in, before the laptop was sent to sleep and restore the previous mode.

  *) How to put the SATA controller into AHCI mode [1]:
  MBP 6,2 (or any other 5 series/3400 series chipset based MBP)
  put this line before 'set root=...':
  setpci -d 8086:3b28 90.b=60
  (that command sets bit 5 and 6 on register 0x90 -- lookup Intel document number 322169 for details)

  [1] http://en.gentoo-wiki.com/wiki/Apple_Macbook_Pro

To manage notifications about this bug go to:
https://bugs.launchpad.net/mactel-support/+bug/817017/+subscriptions


References