Re: [PATCH] platform/x86/intel-uncore-freq: Continue restoring limits on resume

From: srinivas pandruvada

Date: Wed Sep 30 2026 - 16:28:32 EST


On Wed, 2026-09-30 at 00:31 +0800, Guixiong Wei wrote:
> The PM notifier iterates over every uncore frequency instance to
> restore
> user-configured MSR_UNCORE_RATIO_LIMIT values after resume. Entries
> that
> have never been configured legitimately have stored_uncore_data set
> to
> zero.
>
> The refactoring that split common and enumeration code changed the
> iteration from active control CPUs to all allocated instances. It
> also
> changed the skip for an invalid or unconfigured entry from continue
> to
> return, causing that entry to terminate the entire restore operation.
>
> On a multi-package or multi-die system, configuring only a later
> instance
> therefore leaves its limit unrestored after suspend, hibernation, or
> restore if an earlier entry is invalid or unconfigured.
>
> Use continue to skip only the current entry and restore all remaining
> configured instances.
>
> Fixes: dbce412a7733 ("platform/x86/intel-uncore-freq: Split common
> and enumeration part")
> Cc: stable@xxxxxxxxxxxxxxx
> Tested-by: Yijia Wang <wangyijia.yeah@xxxxxxxxxxxxx>
> Signed-off-by: Guixiong Wei <weiguixiong@xxxxxxxxxxxxx>

Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>

> ---
>  drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c | 2
> +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel/uncore-frequency/uncore-
> frequency.c b/drivers/platform/x86/intel/uncore-frequency/uncore-
> frequency.c
> index 667f2c8b9594a..c44e7e38cae25 100644
> --- a/drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c
> +++ b/drivers/platform/x86/intel/uncore-frequency/uncore-frequency.c
> @@ -211,7 +211,7 @@ static int uncore_pm_notify(struct notifier_block
> *nb, unsigned long mode,
>   struct uncore_data *data =
> &uncore_instances[i];
>  
>   if (!data || !data->valid || !data-
> >stored_uncore_data)
> - return 0;
> + continue;
>  
>   wrmsrq_on_cpu(data->control_cpu,
> MSR_UNCORE_RATIO_LIMIT,
>         data->stored_uncore_data);