• Srinivas Pandruvada's avatar
    thermal: intel: powerclamp: Add two module parameters · ebf51971
    Srinivas Pandruvada authored
    In some use cases, it is desirable to only inject idle on certain set
    of CPUs. For example on Alder Lake systems, it is possible that we force
    idle only on P-Cores for thermal reasons. Also the idle percent can be
    more than 50% if we only choose partial set of CPUs in the system.
    
    Introduce 2 new module parameters for this purpose. They can be only
    changed when the cooling device is inactive.
    
    cpumask (Read/Write): A bit mask of CPUs to inject idle. The format of
    this bitmask is same as used in other subsystems like in
    /proc/irq/*/smp_affinity. The mask is comma separated 32 bit groups.
    Each CPU is one bit. For example for 256 CPU system the full mask is:
    ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff
    The rightmost mask is for CPU 0-32.
    
    max_idle (Read/Write): Maximum injected idle time to the total CPU time
    ratio in percent range from 1 to 100. Even if the cooling device max_state
    is always 100 (100%), this parameter allows to add a max idle percent
    limit. The default is 50, to match the current implementation of powerclamp
    driver. Also doesn't allow value more than 75, if the cpumask includes
    every CPU present in the system.
    
    Also when the cpumask doesn't include every CPU, there is no use of
    compensation using package C-state idle counters. Hence don't start
    package C-state polling thread even for a single package or a single die
    system in this case.
    Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    ebf51971
intel_powerclamp.c 20.4 KB