• Srinivas Pandruvada's avatar
    powercap: intel_rapl: Fix invalid setting of Power Limit 4 · 081690e9
    Srinivas Pandruvada authored
    System runs at minimum performance, once powercap RAPL package domain
    enabled flag is changed from 1 to 0 to 1.
    
    Setting RAPL package domain enabled flag to 0, results in setting of
    power limit 4 (PL4) MSR 0x601 to 0. This implies disabling PL4 limit.
    The PL4 limit controls the peak power. So setting 0, results in some
    undesirable performance, which depends on hardware implementation.
    
    Even worse, when the enabled flag is set to 1 again. This will set PL4
    MSR value to 0x01, which means reduce peak power to 0.125W. This will
    force system to run at the lowest possible performance on every PL4
    supported system.
    
    Setting enabled flag should only affect the "enable" bit, not other
    bits. Here it is changing power limit.
    
    This is caused by a change which assumes that there is an enable bit in
    the PL4 MSR like other power limits. Although PL4 enable/disable bit is
    present with TPMI RAPL interface, it is not present with the MSR
    interface.
    
    There is a rapl_primitive_info defined for non existent PL4 enable bit
    and then it is used with the commit 9050a9cd ("powercap: intel_rapl:
    Cleanup Power Limits support") to enable PL4. This is wrong, hence remove
    this rapl primitive for PL4. Also in the function
    rapl_detect_powerlimit(), PL_ENABLE is used to check for the presence of
    power limits. Replace PL_ENABLE with PL_LIMIT, as PL_LIMIT must be
    present. Without this change, PL4 controls will not be available in the
    sysfs once rapl primitive for PL4 is removed.
    
    Fixes: 9050a9cd ("powercap: intel_rapl: Cleanup Power Limits support")
    Suggested-by: default avatarZhang Rui <rui.zhang@intel.com>
    Signed-off-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Tested-by: default avatarSumeet Pawnikar <sumeet.r.pawnikar@intel.com>
    Cc: 6.5+ <stable@vger.kernel.org> # 6.5+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    081690e9
intel_rapl_common.c 48.1 KB