[PATCH 0/1][SRU][JAMMY] Update int340x OS policy capability handshake

Colin Ian King colin.i.king at gmail.com
Wed Mar 23 14:38:45 UTC 2022


BugLink: https://bugs.launchpad.net/bugs/1966089

== SRU JAMMY ==

Update int340x OS policy capability handshake; required for full functionality
in thermald 2.4.9 to improve functionality for newer H/W.

== The fix ==

Upstream commit:

commit c7ff29763989bd09c433f73fae3c1e1c15d9cda4
Author: Srinivas Pandruvada <srinivas.pandruvada at linux.intel.com>
Date: Mon Mar 14 15:09:37 2022 -0700

    thermal: int340x: Update OS policy capability handshake

    Update the firmware with OS supported policies mask, so that firmware can
    relinquish its internal controls. Without this update several Tiger Lake
    laptops gets performance limited with in few seconds of executing in
    turbo region.

    The existing way of enumerating firmware policies via IDSP method and
    selecting policy by directly writing those policy UUIDS via _OSC method
    is not supported in newer generation of hardware.

    There is a new UUID "B23BA85D-C8B7-3542-88DE-8DE2FFCFD698" is defined for
    updating policy capabilities. As part of ACPI _OSC method:

    Arg0 - UUID: B23BA85D-C8B7-3542-88DE-8DE2FFCFD698
    Arg1 - Rev ID: 1
    Arg2 - Count: 2
    Arg3 - Capability buffers: Array of Arg2 DWORDS

    DWORD1: As defined in the ACPI 5.0 Specification
    - Bit 0: Query Flag
    - Bits 1-3: Always 0
    - Bits 4-31: Reserved

    DWORD2 and beyond:
    - Bit0: set to 1 to indicate Intel(R) Dynamic Tuning is active, 0 to
    indicate it is disabled and legacy thermal mechanism should
    be enabled.
    - Bit1: set to 1 to indicate Intel(R) Dynamic Tuning is controlling
    active cooling, 0 to indicate bios shall enable legacy thermal
    zone with active trip point.
    - Bit2: set to 1 to indicate Intel(R) Dynamic Tuning is controlling
    passive cooling, 0 to indicate bios shall enable legacy thermal
    zone with passive trip point.
    - Bit3: set to 1 to indicate Intel(R) Dynamic Tuning is handling
    critical trip point, 0 to indicate bios shall enable legacy
    thermal zone with critical trip point.
    - Bits 4:31: Reserved

    From sysfs interface, there is an existing interface to update policy
    UUID using attribute "current_uuid". User space can write the same UUID
    for ACTIVE, PASSIVE and CRITICAL policy. Driver converts these UUIDs to
    DWORD2 Bit 1 to Bit 3. When any of the policy is activated by user
    space it is assumed that dynamic tuning is active.

    For example
    $cd /sys/bus/platform/devices/INTC1040:00/uuids
    To support active policy
    $echo "3A95C389-E4B8-4629-A526-C52C88626BAE" > current_uuid
    To support passive policy
    $echo "42A441D6-AE6A-462b-A84B-4A8CE79027D3" > current_uuid
    To support critical policy
    $echo "97C68AE7-15FA-499c-B8C9-5DA81D606E0A" > current_uuid

    To check all the supported policies
    $cat current_uuid
    3A95C389-E4B8-4629-A526-C52C88626BAE
    42A441D6-AE6A-462b-A84B-4A8CE79027D3
    97C68AE7-15FA-499c-B8C9-5DA81D606E0A

    To match the bit format for DWORD2, rearranged enum int3400_thermal_uuid
    and int3400_thermal_uuids[] by swapping current INT3400_THERMAL_ACTIVE
    and INT3400_THERMAL_PASSIVE_1.

    If the policies are enumerated via IDSP method then legacy method is
    used, if not the new method is used to update policy support.

Srinivas Pandruvada (1):
  thermal: int340x: Update OS policy capability handshake

 .../intel/int340x_thermal/int3400_thermal.c   | 146 ++++++++++++------
 1 file changed, 97 insertions(+), 49 deletions(-)

-- 
2.35.1




More information about the kernel-team mailing list