Centos-kernel-stream-9/drivers/net/wireless
David Arcari 73087d2ade thermal: core: Allow thermal zones to tell the core to ignore them
JIRA: https://issues.redhat.com/browse/RHEL-61357
Conflicts: 3f3126515fbe ("wifi: iwlwifi: mvm: add mvm-specific guard") is
	   not in RHEL

commit e528be3c87be953b73e7826a2d7e4b837cbad39d
Author: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Date:   Wed Jul 17 21:45:02 2024 +0200

    thermal: core: Allow thermal zones to tell the core to ignore them

    The iwlwifi wireless driver registers a thermal zone that is only needed
    when the network interface handled by it is up and it wants that thermal
    zone to be effectively ignored by the core otherwise.

    Before commit a8a261774466 ("thermal: core: Call monitor_thermal_zone()
    if zone temperature is invalid") that could be achieved by returning
    an error code from the thermal zone's .get_temp() callback because the
    core did not really handle errors returned by it almost at all.
    However, commit a8a261774466 made the core attempt to recover from the
    situation in which the temperature of a thermal zone cannot be
    determined due to errors returned by its .get_temp() and is always
    invalid from the core's perspective.

    That was done because there are thermal zones in which .get_temp()
    returns errors to start with due to some difficulties related to the
    initialization ordering, but then it will start to produce valid
    temperature values at one point.

    Unfortunately, the simple approach taken by commit a8a261774466,
    which is to poll the thermal zone periodically until its .get_temp()
    callback starts to return valid temperature values, is at odds with
    the special thermal zone in iwlwifi in which .get_temp() may always
    return an error because its network interface may always be down.  If
    that happens, every attempt to invoke the thermal zone's .get_temp()
    callback resulting in an error causes the thermal core to print a
    dev_warn() message to the kernel log which is super-noisy.

    To address this problem, make the core handle the case in which
    .get_temp() returns 0, but the temperature value returned by it
    is not actually valid, in a special way.  Namely, make the core
    completely ignore the invalid temperature value coming from
    .get_temp() in that case, which requires folding in
    update_temperature() into its caller and a few related changes.

    On the iwlwifi side, modify iwl_mvm_tzone_get_temp() to return 0
    and put THERMAL_TEMP_INVALID into the temperature return memory
    location instead of returning an error when the firmware is not
    running or it is not of the right type.

    Also, to clearly separate the handling of invalid temperature
    values from the thermal zone initialization, introduce a special
    THERMAL_TEMP_INIT value specifically for the latter purpose.

    Fixes: a8a261774466 ("thermal: core: Call monitor_thermal_zone() if zone temperature is invalid")
    Closes: https://lore.kernel.org/linux-pm/20240715044527.GA1544@sol.localdomain/
    Reported-by: Eric Biggers <ebiggers@kernel.org>
    Reported-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=201761
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de>
    Cc: 6.10+ <stable@vger.kernel.org> # 6.10+
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Link: https://patch.msgid.link/4950004.31r3eYUQgx@rjwysocki.net
    [ rjw: Rebased on top of the current mainline ]
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

Signed-off-by: David Arcari <darcari@redhat.com>
2025-02-17 13:35:04 -05:00
..
admtek wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
ath Merge: Wireless bugfixes (v6.12) 2025-02-10 03:47:13 -05:00
atmel wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
broadcom wifi: brcm80211: BRCM_TRACING should depend on TRACING 2024-11-22 10:58:19 +01:00
intel thermal: core: Allow thermal zones to tell the core to ignore them 2025-02-17 13:35:04 -05:00
intersil wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
marvell wifi: mwifiex: add missing locking for cfg80211 calls 2024-11-22 10:58:21 +01:00
mediatek wifi: mt76: do not increase mcu skb refcount if retry is not supported 2024-11-22 10:58:17 +01:00
microchip wifi: radiotap: Avoid -Wflex-array-member-not-at-end warnings 2024-11-22 10:58:18 +01:00
quantenna wifi: cfg80211: handle DFS per link 2024-11-22 10:58:11 +01:00
ralink wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
realtek wifi: rtw89: coex: initialize local .dbcc_2g_phy in _set_btg_ctrl() 2025-01-15 17:26:25 +01:00
rsi wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
st wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
ti wifi: mac80211: handle ieee80211_radar_detected() for MLO 2024-11-22 10:58:11 +01:00
virtual wifi: radiotap: Avoid -Wflex-array-member-not-at-end warnings 2024-11-22 10:58:18 +01:00
zydas wifi: mac80211: inform the low level if drv_stop() is a suspend 2024-10-29 08:18:11 +01:00
Kconfig
Makefile