Re: [PATCH v6 0/7] PM QoS: add a per-device latency constraints framework

Kevin Hilman
2011-08-22T17:56:38Z

jean.pihet@newoldbits.com writes:

> From: Jean Pihet <j-pihet@ti.com>
>
> High level implementation:
>
> 1. Preparation of the PM QoS for the addition of a device PM QoS constraints
> framework:
> . rename and move of the PM QoS implementation files to kernel/power/qos.c
> and include/linux/pm_qos.h
> . rename of API parameters and internal fields names
> . Move around the PM QoS misc devices management code for better readability
> . re-organize the internal data structs
> . generalize and export the constraints management core code
>
> 2. Implementation of the per-device PM QoS constraints:
> . create drivers/base/power/qos.c for the implementation
> . create a device PM QoS API, which calls the PM QoS constraints management
> core code
> . the per-device latency constraints data strctures are stored in the device
> dev_pm_info struct
> . the device PM code calls the init and destroy of the per-device constraints
> data struct in order to support the dynamic insertion and removal of the
> devices in the system.
> . to minimize the data usage by the per-device constraints, the data struct
> is only allocated at the first call to dev_pm_qos_add_request. The data
> is later free'd when the device is removed from the system
> . per-device notification callbacks can be registered and called upon a
> change to the aggregated constraint value
> . a global mutex protects the constraints users from the data being
> allocated and free'd.
>
> 3. add a global notification mechanism for the device constraints
> . add a global notification chain that gets called upon changes to the
> aggregated constraint value for any device.
> . the notification callbacks are passing the full constraint request data
> in order for the callees to have access to it. The current use is for the
> platform low-level code to access the target device of the constraint

Reviewed-by: Kevin Hilman <khilman@ti.com>