Thanks for catching this.
On the B70 I observed two distinct symptoms after a sustained workload:
- package/VRAM temperature values could remain stale while the physical blower stayed elevated even after the device had returned to idle; - fan1_input could independently report implausibly low or zero RPM while the physical blower was still running fast. This patch only addresses the temperature MMIO path. Holding XE_FW_GT for a short settling interval before the temperature read causes the temperature telemetry to refresh and, in my testing, the physical blower then settles normally as well. The REG_FAN_SPEED path remains a separate direct MMIO read and can still show unreliable values, so the current patch should not be read as fixing fan RPM telemetry itself. I can reword the commit message in a v2 to make that distinction explicit, and investigate the fan telemetry path separately.

On 2026-10-12 13:59, [email protected] wrote:
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] drm/xe: fan telemetry lacks Battlemage thermal force-wake workaround
--

commit a9faaf30cbf789280ad52add1cf188270e8ccad9
Author: Constantinos Chalkias <[email protected]>

drm/xe/hwmon: refresh Battlemage thermal telemetry under force-wake

This commit works around stale thermal telemetry on Battlemage by
acquiring the GT force-wake domain and waiting 500-1000 us before
reading temperature registers.

drm/xe/hwmon: refresh Battlemage thermal telemetry under force-wake

On Battlemage, thermal telemetry can remain stale after the GT returns
to RC6 following sustained workloads.

On an Intel Arc Pro B70, package and VRAM temperature telemetry may stop
refreshing after a long inference workload. Fan telemetry can also
become invalid while the physical blower remains elevated.

[Severity: Medium]
The commit message states that fan telemetry can become invalid, but the patch only applies the force-wake and delay workaround to temperature and
VRAM channels via xe_hwmon_temp_mmio_read().

Does xe_hwmon_fan_input_read() also need this workaround? Currently, it
continues to read REG_FAN_SPEED directly via xe_mmio_read32() without
acquiring force-wake or delaying:

drivers/gpu/drm/xe/xe_hwmon.c:xe_hwmon_fan_input_read() {
    ...
        mutex_lock(&hwmon->hwmon_lock);

reg_val = xe_mmio_read32(mmio, xe_hwmon_get_reg(hwmon, REG_FAN_SPEED, channel));
        time_now = get_jiffies_64();
    ...
}

Will fan telemetry still remain susceptible to staleness on Battlemage
without the workaround?

Reply via email to