lkml.org 
[lkml]   [2018]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH V9] powercap/drivers/idle_injection: Add an idle injection framework
    On Tue, Jun 19, 2018 at 3:23 PM, Daniel Lezcano
    <daniel.lezcano@linaro.org> wrote:

    [cut]

    One more thing.

    > +/**
    > + * idle_injection_register - idle injection init routine
    > + * @cpumask: the list of CPUs managed by the idle injection device
    > + *
    > + * This is the initialization function in charge of creating the
    > + * initializing of the timer and allocate the structures. It does not
    > + * starts the idle injection cycles.
    > + *
    > + * Return: NULL if an allocation fails.
    > + */
    > +struct idle_injection_device *idle_injection_register(struct cpumask *cpumask)
    > +{
    > + struct idle_injection_device *ii_dev;
    > + int cpu, cpu_rb;
    > +
    > + ii_dev = kzalloc(sizeof(*ii_dev) + cpumask_size(), GFP_KERNEL);
    > + if (!ii_dev)
    > + return NULL;
    > +
    > + cpumask_copy(to_cpumask(ii_dev->cpumask), cpumask);
    > + hrtimer_init(&ii_dev->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
    > + ii_dev->timer.function = idle_injection_wakeup_fn;
    > +
    > + for_each_cpu(cpu, to_cpumask(ii_dev->cpumask)) {
    > +
    > + if (per_cpu(idle_injection_device, cpu)) {
    > + pr_err("cpu%d is already registered\n", cpu);

    If you print something like this, it should be clear what it is about
    and what piece of code it comes from as there will be no context
    around it it the log.

    > + goto out_rollback_per_cpu;

    Shorten the label perhaps?

    > + }
    > +
    > + per_cpu(idle_injection_device, cpu) = ii_dev;
    > + }
    > +
    > + return ii_dev;
    > +
    > +out_rollback_per_cpu:
    > + for_each_cpu(cpu_rb, to_cpumask(ii_dev->cpumask)) {
    > + if (cpu == cpu_rb)
    > + break;
    > + per_cpu(idle_injection_device, cpu_rb) = NULL;
    > + }
    > +
    > + kfree(ii_dev);
    > +
    > + return NULL;
    > +}
    > +

    \
     
     \ /
      Last update: 2018-06-25 10:42    [W:2.330 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site