Re: [RFC PATCH v2 5/8] libata-acpi: add ata port runtime D3Coldsupport

From: Lin Ming
Date: Mon Mar 19 2012 - 03:03:48 EST


On Mon, 2012-03-19 at 14:35 +0800, Aaron Lu wrote:
> Hi,
>
> On Mon, Mar 19, 2012 at 01:27:00PM +0800, Lin Ming wrote:
> > On Mon, 2012-03-19 at 11:36 +0800, Aaron Lu wrote:
> > > Hi,
> > >
> > > On Thu, Mar 01, 2012 at 05:02:54PM +0800, Lin Ming wrote:
> > > > ATA port may support runtime D3Cold state, for example, Zero-power ODD case.
> > > > This patch adds wakeup notifier and enable/disable run_wake during
> > > > supend/resume.
> > >
> > > I've been thinking this for some time and realized that it would be
> > > impossible for AMD's platform to work with this patch, the reason:
> > > There is no _PRW in AMD's acpi implementation. And no _PRW would mean
> > > the device is not wake up capable in current Linux ACPI implementation.
> > >
> > > I've checked the ACPI spec and it said: 'the _PRW is only required for
> > > devices that have the ability to wake the system from a system sleeping
> > > state.'
> > > So I'm not sure if _PRW fits here, since the most common use case for
> > > zpodd would be: odd put to D3 cold and system is at S0, and odd is back
> > > to D0 when necessary without affecting the system sleep state.
> > >
> > > I suggest we install the acpi pm notifier on the handle based on the
> > > following two criteria:
> > > 1 This ata device is DA capable;
> > > 2 Its acpi device indicates it is able to wake up itself in S0(_S0W
> > > evaluates 4).
> >
> > OK, reasonable to me.
> >
> > >
> > > Does this make sense and will this work for your platform?
> >
> > Yes.
> >
>
> Great ;-)
>
> > >
> > > Another problem is how to place this ODD device into D3 cold state,
> > > since our platform uses _PS3 control method to power off it. Do you have
> > > any suggestions?
> >
> > acpi_bus_set_power will execute _PS3 too.
> >
> > So I think no problem for AMD's platform.
> >
>
> Sorry I didn't make it clear.
> The problem here is, we are going to set the device power state to D3
> cold, and current OSPM has no support for it.
>
> Another patch of yours solved this problem by defining:
> 1 Device supports D3 cold if it has _PR3;
> 2 For a device to be put to D3 cold, power off all the power resources
> referenced in its _PR3.
>
> Since this can't work for AMD's platform(there is no _PR3 for the sata
> acpi device), I would like to change this a little bit:
> 1 Device supports D3 cold if it has _PR3 or _PS3;

_PS3 may only mean D3Hot support for other device.

You mentioned that AMD platform defined a special device, named ODDZ.

How about device supports D3 cold if

_PR3 or (is ODDZ and ODDZ._PS3)?

> 2 For a device to be put to D3 cold, execute _PS3 first if available and
> then deal with _PR3 as above.

__acpi_bus_set_power(...) has done this.


>
> What do you think of this?
> If you are OK to the above idea, I can change the corresponding patch for
> you to review.

OK.

Thanks,
Lin Ming

>
> Thanks,
> Aaron
>
>


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/