]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
thermal: int340x: processor_thermal: Set feature mask before proc_thermal_add
authorSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Mon, 9 Oct 2023 19:05:34 +0000 (12:05 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Oct 2024 13:11:54 +0000 (15:11 +0200)
[ Upstream commit 6ebc25d8b053a208786295bab58abbb66b39c318 ]

The function proc_thermal_add() adds sysfs entries for power limits.

The feature mask of available features is not present at that time, so
it cannot be used by proc_thermal_add() to selectively create sysfs
attributes.

The feature mask is set by proc_thermal_mmio_add(), so modify the code
to call it before proc_thermal_add() so as to allow the latter to use
the feature mask.

There is no functional impact with this change.

Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
[ rjw: Changelog edits ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Stable-dep-of: 99ca0b57e49f ("thermal: intel: int340x: processor: Fix warning during module unload")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/thermal/intel/int340x_thermal/processor_thermal_device_pci.c

index b4bcd3fe9eb2f9339a9b780f60cc0d1ad1028cfe..921ed55c30f0670adac9d110e56fa101b7f73196 100644 (file)
@@ -237,26 +237,26 @@ static int proc_thermal_pci_probe(struct pci_dev *pdev, const struct pci_device_
 
        INIT_DELAYED_WORK(&pci_info->work, proc_thermal_threshold_work_fn);
 
-       ret = proc_thermal_add(&pdev->dev, proc_priv);
-       if (ret) {
-               dev_err(&pdev->dev, "error: proc_thermal_add, will continue\n");
-               pci_info->no_legacy = 1;
-       }
-
        proc_priv->priv_data = pci_info;
        pci_info->proc_priv = proc_priv;
        pci_set_drvdata(pdev, proc_priv);
 
        ret = proc_thermal_mmio_add(pdev, proc_priv, id->driver_data);
        if (ret)
-               goto err_ret_thermal;
+               return ret;
+
+       ret = proc_thermal_add(&pdev->dev, proc_priv);
+       if (ret) {
+               dev_err(&pdev->dev, "error: proc_thermal_add, will continue\n");
+               pci_info->no_legacy = 1;
+       }
 
        pci_info->tzone = thermal_zone_device_register("TCPU_PCI", 1, 1, pci_info,
                                                        &tzone_ops,
                                                        &tzone_params, 0, 0);
        if (IS_ERR(pci_info->tzone)) {
                ret = PTR_ERR(pci_info->tzone);
-               goto err_ret_mmio;
+               goto err_del_legacy;
        }
 
        /* request and enable interrupt */
@@ -283,11 +283,10 @@ err_free_vectors:
        pci_free_irq_vectors(pdev);
 err_ret_tzone:
        thermal_zone_device_unregister(pci_info->tzone);
-err_ret_mmio:
-       proc_thermal_mmio_remove(pdev, proc_priv);
-err_ret_thermal:
+err_del_legacy:
        if (!pci_info->no_legacy)
                proc_thermal_remove(proc_priv);
+       proc_thermal_mmio_remove(pdev, proc_priv);
        pci_disable_device(pdev);
 
        return ret;