Re: [RFC v2 1/5] PM, Runtime, Add power_must_be_on flag

From: Rafael J. Wysocki
Date: Fri May 04 2012 - 15:32:25 EST


On Friday, May 04, 2012, Huang Ying wrote:
> The extreme way to save device power in runtime is to turn off power
> of device. For example, D3cold for PCIe bus and ZPODD (Zero Power
> Optical Disk Drive) for SATA bus will do that.
>
> But sometimes power off is not expected, some possible reason is as
> follow
>
> - power off device usually incurs longer resume latency, if it exceeds
> power QoS requirement, power off should be disabled.
>
> - For some buses, device in power off state can not support remote
> wakeup. If remote wakeup is desired, power off should be disabled.
>
> In general, whether to put a device into power off state should be
> decided by the driver of the device, but for some buses, whether to
> put a device into power off state may be done by the parent of the
> device. For example, a PCIe end point device may be put into power
> off state by the PCIe port connected to it.
>
> So a flag is introduced for the children devices to tell the parent
> device, whether it should be put into power off state.
>
> This flag is also used for device driver to tell bus layer whether it
> is OK to be powered off.
>
> Signed-off-by: Huang Ying <ying.huang@xxxxxxxxx>

I would be almost fine with this patch, if [2/5] were not present.

However, if you introduce a flag like this, you need to put checks
against it into all places where power may be removed from devices,
like the generic PM domains framework (but not only there).

Thanks,
Rafael


> ---
> include/linux/pm.h | 1 +
> 1 file changed, 1 insertion(+)
>
> --- a/include/linux/pm.h
> +++ b/include/linux/pm.h
> @@ -536,6 +536,7 @@ struct dev_pm_info {
> unsigned int irq_safe:1;
> unsigned int use_autosuspend:1;
> unsigned int timer_autosuspends:1;
> + unsigned int power_must_be_on:1;
> enum rpm_request request;
> enum rpm_status runtime_status;
> int runtime_error;
>
>

--
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/