[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] ahci with pm support


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: "Lu, Guanqun" <guanqun.lu@xxxxxxxxx>
  • Date: Fri, 10 Oct 2008 09:32:51 +0800
  • Accept-language: en-US
  • Acceptlanguage: en-US
  • Delivery-date: Thu, 09 Oct 2008 18:34:16 -0700
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: AckqeBxt2ULRAP8zQRiV4ZfGrjzO4w==
  • Thread-topic: [PATCH] ahci with pm support

This patch adds the power management support to ahci driver.
And it is necessary for S3.

It is back-ported from linux kernel mainline tree.
More precisely, the patch is the diff between the commit
c1332875cbe0c148c7f200d4f9b36b64e34d9872 and tag v2.8.18.

The authorship of the overall changes go to:

=============
commit c1332875cbe0c148c7f200d4f9b36b64e34d9872
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:26 2006 +0900

    [PATCH] ahci: implement Power Management support

    Implement power management support.

    Original implementation is from Zhao, Forrest <forrest.zhao@xxxxxxxxx>

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit d91542c11f3981768367815cf087ad36e792ea4a
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:26 2006 +0900

    [PATCH] ahci: separate out ahci_reset_controller() and 
ahci_init_controller()

    Separate out ahci_reset_controller() and ahci_init_controller() from
    ata_host_init().  These will be used by PM callbacks.  This patch
    doesn't introduce any behavior change.

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit 0be0aa98985dfec42502c0d0af2a1baff9bdb19f
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:26 2006 +0900

    [PATCH] libata: improve driver initialization and deinitialization

    Implement ahci_[de]init_port() and use it during initialization and
    de-initialization.  ahci_[de]init_port() are supersets of what used to
    be done during driver [de-]initialization.  This patch makes the
    following behavior changes.

    * Per-port IRQ mask is cleared on driver load as done in other
      drivers.  The mask will be configured properly during probe.

    * During init_one(), HOST_IRQ_STAT is cleared after masking port IRQs
      such that there is no race window.

    * CMD_SPIN_UP is cleared during init_one() instead of being set.  It
      is set in port_start().  This is more consistent with overall
      structure of initialization.  Note that CMD_SPIN_UP simply controls
      PHY activation.

    * Slumber and staggered spin-up are handled properly.

    * All init/deinit operations are done in step-by-step manner as
      described in the spec instead of issued as single merged command.

    Original implementation is from Zhao, Forrest <forrest.zhao@xxxxxxxxx>

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit 9f5920567bfabbd1be26112a31c44652b6587394
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:26 2006 +0900

    [PATCH] ahci: simplify ahci_start_engine()

    Simplify ahci_start_engine() by killing prerequisite condition checks.
    Rationales are..

    * No user checks error return from ahci_start_engine()

    * Code flow guarantees the prerequisite conditions unless the
      controller is malfunctioning.  In such cases, the driver had chances
      to learn about the problem _before_ calling this function.

    * Closely related to the above two, driver calls into this function
      even when prerequisites fail hoping for the best.

    Basically, ahci_start_engine() should only do the operation itself.
    It isn't the right place to check for prerequisites.

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit d8fcd116d203dfe2f6c272d0cd67724b172f1bc2
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:25 2006 +0900

    [PATCH] ahci: cosmetic changes to ahci_start/stop_engine()

    * fascist-format comments according to comment style used in libata
      core layer.

    * if() -> if ()

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit 254950cd56fee220c9d548f3e57211b95976ba64
Author: Tejun Heo <htejun@xxxxxxxxx>
Date:   Wed Jul 26 15:59:25 2006 +0900

    [PATCH] ahci: relocate several internal functions

    * move ahci_port_start/stop() below EH functions.  This makes ahci
      more consistent with other drivers and makes prototypes for
      ahci_start/stop_engine() unnecessary.

    * swap positions between ahci_start_engine() and ahci_stop_engine()
      for readability.

    Signed-off-by: Tejun Heo <htejun@xxxxxxxxx>
    Signed-off-by: Zhao, Forrest <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>

commit 5457f2194ad198a0aba4190ec99a6a81846fdca5
Author: zhao, forrest <forrest.zhao@xxxxxxxxx>
Date:   Thu Jul 13 13:38:32 2006 +0800

    [PATCH] The redefinition of ahci_start_engine() and ahci_stop_engine()

    - Make ahci_start_engine() and ahci_stop_engine() more consistent with
      AHCI spec 1.1
    - Change their input parameter from ap to port_mmio
    - Update the existing users of ahci_start_engine() and ahci_stop_engine()

    Signed-off-by: Forrest Zhao <forrest.zhao@xxxxxxxxx>
    Signed-off-by: Hannes Reinecke <hare@xxxxxxx>
    Signed-off-by: Jens Axboe <axboe@xxxxxxx>
    Signed-off-by: Jeff Garzik <jeff@xxxxxxxxxx>
=============

Some of the commits above may not be directly related to the ahci pm problem,
but they lay the basic ground for the final commit.


Signed-off-by: Guanqun Lu <guanqun.lu@xxxxxxxxx>


--
Guanqun

Attachment: sata-pm.patch
Description: sata-pm.patch

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.