On 2/20/2024 6:47 PM, Baochen Qiang wrote: > From: Kalle Valo <quic_kvalo@xxxxxxxxxxx> > > Every time the firmware boots we call ath11k_core_qmi_firmware_ready() which > ends up calling ath11k_thermal_register(). So we try to register thermal > devices multiple times. And when we power off the firmware during > suspend/hibernation (implemented in the next patch) we get a warning in resume: > > hwmon hwmon4: PM: parent phy0 should not be sleeping > > Workaround this similarly like ath11k_mac_register() does by testing > ATH11K_FLAG_REGISTERED. > > Tested-on: WCN6855 hw2.0 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3.6510.30 > > Signed-off-by: Kalle Valo <quic_kvalo@xxxxxxxxxxx> you need to add your own S-O-B > --- > drivers/net/wireless/ath/ath11k/thermal.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/ath/ath11k/thermal.c b/drivers/net/wireless/ath/ath11k/thermal.c > index c29b11ab5bfa..41e7499f075f 100644 > --- a/drivers/net/wireless/ath/ath11k/thermal.c > +++ b/drivers/net/wireless/ath/ath11k/thermal.c > @@ -1,7 +1,7 @@ > // SPDX-License-Identifier: BSD-3-Clause-Clear > /* > * Copyright (c) 2020 The Linux Foundation. All rights reserved. > - * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. > + * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights reserved. > */ > > #include <linux/device.h> > @@ -163,6 +163,9 @@ int ath11k_thermal_register(struct ath11k_base *ab) > struct ath11k_pdev *pdev; > int i, ret; > > + if (test_bit(ATH11K_FLAG_REGISTERED, &ab->dev_flags)) > + return 0; > + > for (i = 0; i < ab->num_radios; i++) { > pdev = &ab->pdevs[i]; > ar = pdev->ar;