lkml.org 
[lkml]   [2021]   [May]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 2/3] PM / EM: Extend em_perf_domain with a flag field
    Date
    Merge the current "milliwatts" option into a "flag" field. This intends to
    prepare the extension of this structure for inefficient states support in
    the Energy Model.

    Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>

    diff --git a/include/linux/energy_model.h b/include/linux/energy_model.h
    index 757fc60..9be7bde 100644
    --- a/include/linux/energy_model.h
    +++ b/include/linux/energy_model.h
    @@ -28,8 +28,7 @@ struct em_perf_state {
    * em_perf_domain - Performance domain
    * @table: List of performance states, in ascending order
    * @nr_perf_states: Number of performance states
    - * @milliwatts: Flag indicating the power values are in milli-Watts
    - * or some other scale.
    + * @flags: See "em_perf_domain flags"
    * @cpus: Cpumask covering the CPUs of the domain. It's here
    * for performance reasons to avoid potential cache
    * misses during energy calculations in the scheduler
    @@ -44,10 +43,18 @@ struct em_perf_state {
    struct em_perf_domain {
    struct em_perf_state *table;
    int nr_perf_states;
    - int milliwatts;
    + int flags;
    unsigned long cpus[];
    };

    +/*
    + * em_perf_domain flags:
    + *
    + * EM_PERF_DOMAIN_MILLIWATTS: The power values are in milli-Watts or some
    + * other scale.
    + */
    +#define EM_PERF_DOMAIN_MILLIWATTS BIT(0)
    +
    #define em_span_cpus(em) (to_cpumask((em)->cpus))

    #ifdef CONFIG_ENERGY_MODEL
    diff --git a/kernel/power/energy_model.c b/kernel/power/energy_model.c
    index c4871a8..638581c 100644
    --- a/kernel/power/energy_model.c
    +++ b/kernel/power/energy_model.c
    @@ -55,7 +55,8 @@ DEFINE_SHOW_ATTRIBUTE(em_debug_cpus);
    static int em_debug_units_show(struct seq_file *s, void *unused)
    {
    struct em_perf_domain *pd = s->private;
    - char *units = pd->milliwatts ? "milliWatts" : "bogoWatts";
    + char *units = (pd->flags & EM_PERF_DOMAIN_MILLIWATTS) ?
    + "milliWatts" : "bogoWatts";

    seq_printf(s, "%s\n", units);

    @@ -341,7 +342,8 @@ int em_dev_register_perf_domain(struct device *dev, unsigned int nr_states,
    if (ret)
    goto unlock;

    - dev->em_pd->milliwatts = milliwatts;
    + if (milliwatts)
    + dev->em_pd->flags |= EM_PERF_DOMAIN_MILLIWATTS;

    em_debug_create_pd(dev);
    dev_info(dev, "EM: created perf domain\n");
    --
    2.7.4
    \
     
     \ /
      Last update: 2021-05-21 18:55    [W:3.379 / U:0.456 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site