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@gmail.com>
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@intel.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit d91542c11f3981768367815cf087ad36e792ea4a
Author: Tejun Heo <htejun@gmail.com>
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@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit 0be0aa98985dfec42502c0d0af2a1baff9bdb19f
Author: Tejun Heo <htejun@gmail.com>
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@intel.com>
Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit 9f5920567bfabbd1be26112a31c44652b6587394
Author: Tejun Heo <htejun@gmail.com>
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@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit d8fcd116d203dfe2f6c272d0cd67724b172f1bc2
Author: Tejun Heo <htejun@gmail.com>
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@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit 254950cd56fee220c9d548f3e57211b95976ba64
Author: Tejun Heo <htejun@gmail.com>
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@gmail.com>
Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
commit 5457f2194ad198a0aba4190ec99a6a81846fdca5
Author: zhao, forrest <forrest.zhao@intel.com>
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@intel.com>
Signed-off-by: Hannes Reinecke <hare@suse.de>
Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
============
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@gmail.com>
--
Guanqun
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
Keir, I think we need this patch in Xen 3.3 tree too, and I checked the tree, found Xen 3.3 is sharing dom0 tree with unstable, right? Thanks! -Xin>-----Original Message----- >From: xen-devel-bounces@lists.xensource.com >[mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Lu, Guanqun >Sent: Friday, October 10, 2008 9:33 AM >To: xen-devel@lists.xensource.com >Subject: [Xen-devel] [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@gmail.com> >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@intel.com> > > Signed-off-by: Tejun Heo <htejun@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit d91542c11f3981768367815cf087ad36e792ea4a >Author: Tejun Heo <htejun@gmail.com> >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@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit 0be0aa98985dfec42502c0d0af2a1baff9bdb19f >Author: Tejun Heo <htejun@gmail.com> >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@intel.com> > > Signed-off-by: Tejun Heo <htejun@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit 9f5920567bfabbd1be26112a31c44652b6587394 >Author: Tejun Heo <htejun@gmail.com> >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@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit d8fcd116d203dfe2f6c272d0cd67724b172f1bc2 >Author: Tejun Heo <htejun@gmail.com> >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@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit 254950cd56fee220c9d548f3e57211b95976ba64 >Author: Tejun Heo <htejun@gmail.com> >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@gmail.com> > Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> > Signed-off-by: Jeff Garzik <jeff@garzik.org> > >commit 5457f2194ad198a0aba4190ec99a6a81846fdca5 >Author: zhao, forrest <forrest.zhao@intel.com> >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@intel.com> > Signed-off-by: Hannes Reinecke <hare@suse.de> > Signed-off-by: Jens Axboe <axboe@suse.de> > Signed-off-by: Jeff Garzik <jeff@garzik.org> >============> >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@gmail.com> > > >-- >Guanqun_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Yes it is. K. On 15/10/08 08:54, "Li, Xin B" <xin.b.li@intel.com> wrote:> Keir, I think we need this patch in Xen 3.3 tree too, and I checked the tree, > found Xen 3.3 is sharing dom0 tree with unstable, right? > Thanks! > -Xin > >> -----Original Message----- >> From: xen-devel-bounces@lists.xensource.com >> [mailto:xen-devel-bounces@lists.xensource.com] On Behalf Of Lu, Guanqun >> Sent: Friday, October 10, 2008 9:33 AM >> To: xen-devel@lists.xensource.com >> Subject: [Xen-devel] [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@gmail.com> >> 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@intel.com> >> >> Signed-off-by: Tejun Heo <htejun@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit d91542c11f3981768367815cf087ad36e792ea4a >> Author: Tejun Heo <htejun@gmail.com> >> 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@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit 0be0aa98985dfec42502c0d0af2a1baff9bdb19f >> Author: Tejun Heo <htejun@gmail.com> >> 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@intel.com> >> >> Signed-off-by: Tejun Heo <htejun@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit 9f5920567bfabbd1be26112a31c44652b6587394 >> Author: Tejun Heo <htejun@gmail.com> >> 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@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit d8fcd116d203dfe2f6c272d0cd67724b172f1bc2 >> Author: Tejun Heo <htejun@gmail.com> >> 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@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit 254950cd56fee220c9d548f3e57211b95976ba64 >> Author: Tejun Heo <htejun@gmail.com> >> 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@gmail.com> >> Signed-off-by: Zhao, Forrest <forrest.zhao@intel.com> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> >> commit 5457f2194ad198a0aba4190ec99a6a81846fdca5 >> Author: zhao, forrest <forrest.zhao@intel.com> >> 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@intel.com> >> Signed-off-by: Hannes Reinecke <hare@suse.de> >> Signed-off-by: Jens Axboe <axboe@suse.de> >> Signed-off-by: Jeff Garzik <jeff@garzik.org> >> ============>> >> 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@gmail.com> >> >> >> -- >> Guanqun > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel