Re: [PATCH v6 0/7] PM QoS: add a per-device latency constraints framework
From: Rafael J. Wysocki <hidden>
Date: 2011-08-18 07:59:00
Hi, On Wednesday, August 17, 2011, jean.pihet@newoldbits.com wrote:
From: Jean Pihet <redacted>
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
Questions:
1. the user space API is still under discussions on linux-omap and linux-pm MLs,
cf. [1]. The idea is to add a user-space API for the devices constratins
PM QoS, using a sysfs entry per device
[1] http://marc.info/?l=linux-omap&m=131232344503327&w=2
ToDo:
1. write Documentation for the new PM QoS class, once the code is agreed on
2. submit patches for the OMAP low level code to control the power domains
states from the device constraints, using a global notification callback
Based on the master branch of the linux-omap git tree (3.1.0-rc1). Compile
tested using OMAP and x86 generic defconfigs.
Tested on OMAP3 Beagleboard (ES2.x).
Need testing on platforms other than OMAP, because of the impact on the
device insertion/removal in device_pm_add/removeOK If that were my code, I'd probably change a couple of things more, but it looks good enough to me to take as is. I'm going to push this patchset for 3.2. Thanks a lot for your hard work on it, Rafael