07 Jul, 2016

1 commit


09 Jun, 2016

3 commits


09 Mar, 2016

4 commits

  • Some fields in struct od_cpu_dbs_info_s and struct cs_cpu_dbs_info_s
    are only used for a limited set of CPUs. Namely, if a policy is
    shared between multiple CPUs, those fields will only be used for one
    of them (policy->cpu). This means that they really are per-policy
    rather than per-CPU and holding room for them in per-CPU data
    structures is generally wasteful. Also moving those fields into
    per-policy data structures will allow some significant simplifications
    to be made going forward.

    For this reason, introduce struct cs_policy_dbs_info and
    struct od_policy_dbs_info to hold those fields. Define each of the
    new structures as an extension of struct policy_dbs_info (such that
    struct policy_dbs_info is embedded in each of them) and introduce
    new ->alloc and ->free governor callbacks to allocate and free
    those structures, respectively, such that ->alloc() will return
    a pointer to the struct policy_dbs_info embedded in the allocated
    data structure and ->free() will take that pointer as its argument.

    With that, modify the code accessing the data fields in question
    in per-CPU data objects to look for them in the new structures
    via the struct policy_dbs_info pointer available to it and drop
    them from struct od_cpu_dbs_info_s and struct cs_cpu_dbs_info_s.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar

    Rafael J. Wysocki
     
  • The struct policy_dbs_info objects representing per-policy governor
    data are not accessible directly from the corresponding policy
    objects. To access them, one has to get a pointer to the
    struct cpu_dbs_info of policy->cpu and use the policy_dbs field of
    that which isn't really straightforward.

    To address that rearrange the governor data structures so the
    governor_data pointer in struct cpufreq_policy will point to
    struct policy_dbs_info (instead of struct dbs_data) and that will
    contain a pointer to struct dbs_data.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar

    Rafael J. Wysocki
     
  • Since it is possible to obtain a pointer to struct dbs_governor
    from a pointer to the struct governor embedded in it with the help
    of container_of(), the additional gov pointer in struct dbs_data
    isn't really necessary.

    Drop that pointer and make the code using it reach the dbs_governor
    object via policy->governor.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar

    Rafael J. Wysocki
     
  • The ondemand and conservative governors are represented by
    struct common_dbs_data whose name doesn't reflect the purpose it
    is used for, so rename it to struct dbs_governor and rename
    variables of that type accordingly.

    No functional changes.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Viresh Kumar

    Rafael J. Wysocki
     

10 Apr, 2013

1 commit

  • Future AMD processors, starting with Family 16h, can provide software
    with feedback on how the workload may respond to frequency change --
    memory-bound workloads will not benefit from higher frequency, where
    as compute-bound workloads will. This patch enables this "frequency
    sensitivity feedback" to aid the ondemand governor to make better
    frequency change decisions by hooking into the powersave bias.

    Signed-off-by: Jacob Shin
    Acked-by: Thomas Renninger
    Acked-by: Borislav Petkov
    Acked-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Jacob Shin