lkml.org 
[lkml]   [2010]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] pm_qos: Add system bus performance parameter
    On Fri, Aug 27, 2010 at 07:31:46AM -0700, Kevin Hilman wrote:
    > Saravana Kannan <skannan@codeaurora.org> writes:
    >
    > > Some drivers/devices might need some minimum system bus performance to
    > > provide acceptable service. Provide a PM QoS parameter to send these requests
    > > to.
    > >
    > > The new parameter is named "system bus performance" since it is generic enough
    > > for the unit of the request to be frequency, bandwidth or something else that
    > > might be appropriate. It's up to each implementation of the QoS provider to
    > > define what the unit of the request would be.
    > >
    > > Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
    >
    > With this current design, only one system-wide bus would be managed.
    > What if a platform has more than one independently scalable bus?

    we have the same problem for mutliple network devices today. its a
    design limitation to pm_qos I'd like to fix too.

    > I think the only scalable way to handle this kind of thing is to have
    > per-device QoS constraints that can then be combined/aggregated by parent
    > devices/busses.

    I think this path has a chance of fixing the current limitations of
    pm-qos.

    > At LPC this year, I've proposed per-device QoS constraints[1] as a topic
    > for the PM mini-conf. I hope some folks from the MSM camp can be there
    > for these discussions.

    I thought we were going to do some prototyping or hacking on this by
    now. Who was going to take the first wack at this?

    --mgross

    > Kevin
    >
    > [1] http://www.linuxplumbersconf.org/2010/ocw/proposals/819
    >
    > > ---
    > > kernel/pm_qos_params.c | 9 +++++++++
    > > 1 files changed, 9 insertions(+), 0 deletions(-)
    > >
    > > diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c
    > > index 996a4de..1a44a67 100644
    > > --- a/kernel/pm_qos_params.c
    > > +++ b/kernel/pm_qos_params.c
    > > @@ -93,12 +93,21 @@ static struct pm_qos_object network_throughput_pm_qos = {
    > > .type = PM_QOS_MAX,
    > > };
    > >
    > > +static BLOCKING_NOTIFIER_HEAD(system_bus_performance_notifier);
    > > +static struct pm_qos_object system_bus_performance_pm_qos = {
    > > + .requests = PLIST_HEAD_INIT(system_bus_performance_pm_qos.requests, pm_qos_lock),
    > > + .notifiers = &system_bus_performance_notifier,
    > > + .name = "system_bus_performance",
    > > + .default_value = 0,
    > > + .type = PM_QOS_MAX,
    > > +};
    > >
    > > static struct pm_qos_object *pm_qos_array[] = {
    > > &null_pm_qos,
    > > &cpu_dma_pm_qos,
    > > &network_lat_pm_qos,
    > > &network_throughput_pm_qos
    > > + &system_bus_performance_pm_qos
    > > };
    > >
    > > static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,


    \
     
     \ /
      Last update: 2010-08-28 04:11    [W:4.448 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site