* [PATCH 0/3] ACPI: processor: idle: Enhance LPI verification and
@ 2025-11-25 6:52 Huisong Li
2025-11-25 6:52 ` [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe Huisong Li
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Huisong Li @ 2025-11-25 6:52 UTC (permalink / raw)
To: rafael, lenb
Cc: linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
This series is aimed to let LPI verification effective and redefine
two functions to void, which is a part of the series in link [1].
[1] https://lore.kernel.org/all/20251103084244.2654432-1-lihuisong@huawei.com
Huisong Li (3):
ACPI: processor: idle: Relocate and verify
acpi_processor_ffh_lpi_probe
ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_dev to
void
ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_states to
void
drivers/acpi/processor_idle.c | 34 +++++++++++++++++++---------------
1 file changed, 19 insertions(+), 15 deletions(-)
--
2.33.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2025-11-25 6:52 [PATCH 0/3] ACPI: processor: idle: Enhance LPI verification and Huisong Li
@ 2025-11-25 6:52 ` Huisong Li
2026-01-14 17:27 ` Rafael J. Wysocki
2025-11-25 6:52 ` [PATCH 2/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_dev to void Huisong Li
2025-11-25 6:52 ` [PATCH 3/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_states " Huisong Li
2 siblings, 1 reply; 9+ messages in thread
From: Huisong Li @ 2025-11-25 6:52 UTC (permalink / raw)
To: rafael, lenb
Cc: linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
The platform used LPI need check if the LPI support and the entry
method is valid by the acpi_processor_ffh_lpi_probe(). But the return
of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
isn't verified by any caller.
What's more, acpi_processor_get_power_info() is a more logical place for
verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
So move acpi_processor_ffh_lpi_probe() from the latter to the former and
verify its return.
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
drivers/acpi/processor_idle.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 5f86297c8b23..cdf86874a87a 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
dev->cpu = pr->id;
if (pr->flags.has_lpi)
- return acpi_processor_ffh_lpi_probe(pr->id);
+ return 0;
acpi_processor_setup_cpuidle_cx(pr, dev);
return 0;
@@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
ret = acpi_processor_get_lpi_info(pr);
if (ret)
- ret = acpi_processor_get_cstate_info(pr);
+ return acpi_processor_get_cstate_info(pr);
+
+ if (pr->flags.has_lpi) {
+ ret = acpi_processor_ffh_lpi_probe(pr->id);
+ if (ret)
+ pr_err("Processor FFH LPI state is invalid.\n");
+ }
return ret;
}
--
2.33.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 2/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_dev to void
2025-11-25 6:52 [PATCH 0/3] ACPI: processor: idle: Enhance LPI verification and Huisong Li
2025-11-25 6:52 ` [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe Huisong Li
@ 2025-11-25 6:52 ` Huisong Li
2025-11-25 6:52 ` [PATCH 3/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_states " Huisong Li
2 siblings, 0 replies; 9+ messages in thread
From: Huisong Li @ 2025-11-25 6:52 UTC (permalink / raw)
To: rafael, lenb
Cc: linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
Notice that the acpi_processor_setup_cpuidle_dev() don't need to
return any value because their callers don't check them anyway
and the function doesn't fail to execute.
So redefine the function to void.
No intentional functional impact.
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
drivers/acpi/processor_idle.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index cdf86874a87a..2804fa91c1ec 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1244,18 +1244,17 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
* @pr: the ACPI processor
* @dev : the cpuidle device
*/
-static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
- struct cpuidle_device *dev)
+static void acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
+ struct cpuidle_device *dev)
{
if (!pr->flags.power_setup_done || !pr->flags.power || !dev)
- return -EINVAL;
+ return;
dev->cpu = pr->id;
if (pr->flags.has_lpi)
- return 0;
+ return;
acpi_processor_setup_cpuidle_cx(pr, dev);
- return 0;
}
static int acpi_processor_get_power_info(struct acpi_processor *pr)
--
2.33.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH 3/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_states to void
2025-11-25 6:52 [PATCH 0/3] ACPI: processor: idle: Enhance LPI verification and Huisong Li
2025-11-25 6:52 ` [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe Huisong Li
2025-11-25 6:52 ` [PATCH 2/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_dev to void Huisong Li
@ 2025-11-25 6:52 ` Huisong Li
2 siblings, 0 replies; 9+ messages in thread
From: Huisong Li @ 2025-11-25 6:52 UTC (permalink / raw)
To: rafael, lenb
Cc: linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
Notice that the acpi_processor_setup_cpuidle_states() don't need to
return any value because their callers don't check them anyway.
In addition, acpi_processor_setup_lpi_states() wouldn't execute with
failure. So redefine setup idle functions to void.
No intentional functional impact.
Signed-off-by: Huisong Li <lihuisong@huawei.com>
---
drivers/acpi/processor_idle.c | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 2804fa91c1ec..686aa18bbcd2 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -1180,7 +1180,7 @@ static int acpi_idle_lpi_enter(struct cpuidle_device *dev,
return -EINVAL;
}
-static int acpi_processor_setup_lpi_states(struct acpi_processor *pr)
+static void acpi_processor_setup_lpi_states(struct acpi_processor *pr)
{
int i;
struct acpi_lpi_state *lpi;
@@ -1188,7 +1188,7 @@ static int acpi_processor_setup_lpi_states(struct acpi_processor *pr)
struct cpuidle_driver *drv = &acpi_idle_driver;
if (!pr->flags.has_lpi)
- return -EOPNOTSUPP;
+ return;
for (i = 0; i < pr->power.count && i < CPUIDLE_STATE_MAX; i++) {
lpi = &pr->power.lpi_states[i];
@@ -1206,8 +1206,6 @@ static int acpi_processor_setup_lpi_states(struct acpi_processor *pr)
}
drv->state_count = i;
-
- return 0;
}
/**
@@ -1216,13 +1214,13 @@ static int acpi_processor_setup_lpi_states(struct acpi_processor *pr)
*
* @pr: the ACPI processor
*/
-static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
+static void acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
{
int i;
struct cpuidle_driver *drv = &acpi_idle_driver;
if (!pr->flags.power_setup_done || !pr->flags.power)
- return -EINVAL;
+ return;
drv->safe_state_index = -1;
for (i = ACPI_IDLE_STATE_START; i < CPUIDLE_STATE_MAX; i++) {
@@ -1230,11 +1228,12 @@ static int acpi_processor_setup_cpuidle_states(struct acpi_processor *pr)
drv->states[i].desc[0] = '\0';
}
- if (pr->flags.has_lpi)
- return acpi_processor_setup_lpi_states(pr);
+ if (pr->flags.has_lpi) {
+ acpi_processor_setup_lpi_states(pr);
+ return;
+ }
acpi_processor_setup_cstates(pr);
- return 0;
}
/**
--
2.33.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2025-11-25 6:52 ` [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe Huisong Li
@ 2026-01-14 17:27 ` Rafael J. Wysocki
2026-01-15 12:09 ` lihuisong (C)
0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2026-01-14 17:27 UTC (permalink / raw)
To: Huisong Li
Cc: rafael, lenb, linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8
On Tue, Nov 25, 2025 at 7:52 AM Huisong Li <lihuisong@huawei.com> wrote:
>
> The platform used LPI need check if the LPI support and the entry
> method is valid by the acpi_processor_ffh_lpi_probe(). But the return
> of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
> isn't verified by any caller.
>
> What's more, acpi_processor_get_power_info() is a more logical place for
> verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
> So move acpi_processor_ffh_lpi_probe() from the latter to the former and
> verify its return.
>
> Signed-off-by: Huisong Li <lihuisong@huawei.com>
> ---
> drivers/acpi/processor_idle.c | 10 ++++++++--
> 1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index 5f86297c8b23..cdf86874a87a 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
>
> dev->cpu = pr->id;
> if (pr->flags.has_lpi)
> - return acpi_processor_ffh_lpi_probe(pr->id);
> + return 0;
>
> acpi_processor_setup_cpuidle_cx(pr, dev);
> return 0;
> @@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
>
> ret = acpi_processor_get_lpi_info(pr);
> if (ret)
> - ret = acpi_processor_get_cstate_info(pr);
> + return acpi_processor_get_cstate_info(pr);
> +
> + if (pr->flags.has_lpi) {
> + ret = acpi_processor_ffh_lpi_probe(pr->id);
> + if (ret)
> + pr_err("Processor FFH LPI state is invalid.\n");
> + }
>
> return ret;
> }
> --
Please reorder this behind the next patch in the series.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2026-01-14 17:27 ` Rafael J. Wysocki
@ 2026-01-15 12:09 ` lihuisong (C)
2026-01-15 13:06 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: lihuisong (C) @ 2026-01-15 12:09 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: lenb, linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
Hi Rafael,
On 1/15/2026 1:27 AM, Rafael J. Wysocki wrote:
> On Tue, Nov 25, 2025 at 7:52 AM Huisong Li <lihuisong@huawei.com> wrote:
>> The platform used LPI need check if the LPI support and the entry
>> method is valid by the acpi_processor_ffh_lpi_probe(). But the return
>> of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
>> isn't verified by any caller.
>>
>> What's more, acpi_processor_get_power_info() is a more logical place for
>> verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
>> So move acpi_processor_ffh_lpi_probe() from the latter to the former and
>> verify its return.
>>
>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>> ---
>> drivers/acpi/processor_idle.c | 10 ++++++++--
>> 1 file changed, 8 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
>> index 5f86297c8b23..cdf86874a87a 100644
>> --- a/drivers/acpi/processor_idle.c
>> +++ b/drivers/acpi/processor_idle.c
>> @@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
>>
>> dev->cpu = pr->id;
>> if (pr->flags.has_lpi)
>> - return acpi_processor_ffh_lpi_probe(pr->id);
>> + return 0;
>>
>> acpi_processor_setup_cpuidle_cx(pr, dev);
>> return 0;
>> @@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
>>
>> ret = acpi_processor_get_lpi_info(pr);
>> if (ret)
>> - ret = acpi_processor_get_cstate_info(pr);
>> + return acpi_processor_get_cstate_info(pr);
>> +
>> + if (pr->flags.has_lpi) {
>> + ret = acpi_processor_ffh_lpi_probe(pr->id);
>> + if (ret)
>> + pr_err("Processor FFH LPI state is invalid.\n");
>> + }
>>
>> return ret;
>> }
>> --
> Please reorder this behind the next patch in the series.
Patch 2/3 depends on this patch.
So I don't know how to reorder this patch.
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2026-01-15 12:09 ` lihuisong (C)
@ 2026-01-15 13:06 ` Rafael J. Wysocki
2026-01-16 6:37 ` lihuisong (C)
0 siblings, 1 reply; 9+ messages in thread
From: Rafael J. Wysocki @ 2026-01-15 13:06 UTC (permalink / raw)
To: lihuisong (C)
Cc: Rafael J. Wysocki, lenb, linux-acpi, linux-kernel, Sudeep.Holla,
linuxarm, jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8
On Thu, Jan 15, 2026 at 1:09 PM lihuisong (C) <lihuisong@huawei.com> wrote:
>
> Hi Rafael,
>
> On 1/15/2026 1:27 AM, Rafael J. Wysocki wrote:
> > On Tue, Nov 25, 2025 at 7:52 AM Huisong Li <lihuisong@huawei.com> wrote:
> >> The platform used LPI need check if the LPI support and the entry
> >> method is valid by the acpi_processor_ffh_lpi_probe(). But the return
> >> of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
> >> isn't verified by any caller.
> >>
> >> What's more, acpi_processor_get_power_info() is a more logical place for
> >> verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
> >> So move acpi_processor_ffh_lpi_probe() from the latter to the former and
> >> verify its return.
> >>
> >> Signed-off-by: Huisong Li <lihuisong@huawei.com>
> >> ---
> >> drivers/acpi/processor_idle.c | 10 ++++++++--
> >> 1 file changed, 8 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> >> index 5f86297c8b23..cdf86874a87a 100644
> >> --- a/drivers/acpi/processor_idle.c
> >> +++ b/drivers/acpi/processor_idle.c
> >> @@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
> >>
> >> dev->cpu = pr->id;
> >> if (pr->flags.has_lpi)
> >> - return acpi_processor_ffh_lpi_probe(pr->id);
> >> + return 0;
> >>
> >> acpi_processor_setup_cpuidle_cx(pr, dev);
> >> return 0;
> >> @@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
> >>
> >> ret = acpi_processor_get_lpi_info(pr);
> >> if (ret)
> >> - ret = acpi_processor_get_cstate_info(pr);
> >> + return acpi_processor_get_cstate_info(pr);
> >> +
> >> + if (pr->flags.has_lpi) {
> >> + ret = acpi_processor_ffh_lpi_probe(pr->id);
> >> + if (ret)
> >> + pr_err("Processor FFH LPI state is invalid.\n");
> >> + }
> >>
> >> return ret;
> >> }
> >> --
> > Please reorder this behind the next patch in the series.
> Patch 2/3 depends on this patch.
> So I don't know how to reorder this patch.
I should have been more precise, sorry.
Please first convert acpi_processor_setup_cpuidle_dev() to a void
function and then make the changes from this patch on top of that.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2026-01-15 13:06 ` Rafael J. Wysocki
@ 2026-01-16 6:37 ` lihuisong (C)
2026-01-16 12:22 ` Rafael J. Wysocki
0 siblings, 1 reply; 9+ messages in thread
From: lihuisong (C) @ 2026-01-16 6:37 UTC (permalink / raw)
To: Rafael J. Wysocki
Cc: lenb, linux-acpi, linux-kernel, Sudeep.Holla, linuxarm,
jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8, lihuisong
On 1/15/2026 9:06 PM, Rafael J. Wysocki wrote:
> On Thu, Jan 15, 2026 at 1:09 PM lihuisong (C) <lihuisong@huawei.com> wrote:
>> Hi Rafael,
>>
>> On 1/15/2026 1:27 AM, Rafael J. Wysocki wrote:
>>> On Tue, Nov 25, 2025 at 7:52 AM Huisong Li <lihuisong@huawei.com> wrote:
>>>> The platform used LPI need check if the LPI support and the entry
>>>> method is valid by the acpi_processor_ffh_lpi_probe(). But the return
>>>> of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
>>>> isn't verified by any caller.
>>>>
>>>> What's more, acpi_processor_get_power_info() is a more logical place for
>>>> verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
>>>> So move acpi_processor_ffh_lpi_probe() from the latter to the former and
>>>> verify its return.
>>>>
>>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
>>>> ---
>>>> drivers/acpi/processor_idle.c | 10 ++++++++--
>>>> 1 file changed, 8 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
>>>> index 5f86297c8b23..cdf86874a87a 100644
>>>> --- a/drivers/acpi/processor_idle.c
>>>> +++ b/drivers/acpi/processor_idle.c
>>>> @@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
>>>>
>>>> dev->cpu = pr->id;
>>>> if (pr->flags.has_lpi)
>>>> - return acpi_processor_ffh_lpi_probe(pr->id);
>>>> + return 0;
>>>>
>>>> acpi_processor_setup_cpuidle_cx(pr, dev);
>>>> return 0;
>>>> @@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
>>>>
>>>> ret = acpi_processor_get_lpi_info(pr);
>>>> if (ret)
>>>> - ret = acpi_processor_get_cstate_info(pr);
>>>> + return acpi_processor_get_cstate_info(pr);
>>>> +
>>>> + if (pr->flags.has_lpi) {
>>>> + ret = acpi_processor_ffh_lpi_probe(pr->id);
>>>> + if (ret)
>>>> + pr_err("Processor FFH LPI state is invalid.\n");
>>>> + }
>>>>
>>>> return ret;
>>>> }
>>>> --
>>> Please reorder this behind the next patch in the series.
>> Patch 2/3 depends on this patch.
>> So I don't know how to reorder this patch.
> I should have been more precise, sorry.
>
> Please first convert acpi_processor_setup_cpuidle_dev() to a void
> function and then make the changes from this patch on top of that.
The acpi_processor_ffh_lpi_probe may return an error.
And acpi_processor_setup_cpuidle_dev can pass the error code to its
caller(Although the caller ignored it currently).
It may be inapproprate to convert acpi_processor_setup_cpuidle_dev() to
a void function directly if we doesn't move acpi_processor_ffh_lpi_probe
out first.
So I first relocate the position of acpi_processor_ffh_lpi_probe. Then
changing it to a void function would be more logical.
Or we need to drop the return value of acpi_processor_ffh_lpi_probe and
convert acpi_processor_setup_cpuidle_dev to a void function, like:
-->
-static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
- struct cpuidle_device *dev)
+static void acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
+ struct cpuidle_device *dev)
{
if (!pr->flags.power_setup_done || !pr->flags.power || !dev)
- return -EINVAL;
+ return;
dev->cpu = pr->id;
if (pr->flags.has_lpi) {
- return acpi_processor_ffh_lpi_probe();
+ acpi_processor_ffh_lpi_probe();
+ return;
}
acpi_processor_setup_cpuidle_cx(pr, dev);
- return 0;
}
What do you think now?
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe
2026-01-16 6:37 ` lihuisong (C)
@ 2026-01-16 12:22 ` Rafael J. Wysocki
0 siblings, 0 replies; 9+ messages in thread
From: Rafael J. Wysocki @ 2026-01-16 12:22 UTC (permalink / raw)
To: lihuisong (C)
Cc: Rafael J. Wysocki, lenb, linux-acpi, linux-kernel, Sudeep.Holla,
linuxarm, jonathan.cameron, zhanjie9, zhenglifeng1, yubowen8
On Fri, Jan 16, 2026 at 7:38 AM lihuisong (C) <lihuisong@huawei.com> wrote:
>
>
> On 1/15/2026 9:06 PM, Rafael J. Wysocki wrote:
> > On Thu, Jan 15, 2026 at 1:09 PM lihuisong (C) <lihuisong@huawei.com> wrote:
> >> Hi Rafael,
> >>
> >> On 1/15/2026 1:27 AM, Rafael J. Wysocki wrote:
> >>> On Tue, Nov 25, 2025 at 7:52 AM Huisong Li <lihuisong@huawei.com> wrote:
> >>>> The platform used LPI need check if the LPI support and the entry
> >>>> method is valid by the acpi_processor_ffh_lpi_probe(). But the return
> >>>> of acpi_processor_ffh_lpi_probe() in acpi_processor_setup_cpuidle_dev()
> >>>> isn't verified by any caller.
> >>>>
> >>>> What's more, acpi_processor_get_power_info() is a more logical place for
> >>>> verifying the validity of FFH LPI than acpi_processor_setup_cpuidle_dev().
> >>>> So move acpi_processor_ffh_lpi_probe() from the latter to the former and
> >>>> verify its return.
> >>>>
> >>>> Signed-off-by: Huisong Li <lihuisong@huawei.com>
> >>>> ---
> >>>> drivers/acpi/processor_idle.c | 10 ++++++++--
> >>>> 1 file changed, 8 insertions(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> >>>> index 5f86297c8b23..cdf86874a87a 100644
> >>>> --- a/drivers/acpi/processor_idle.c
> >>>> +++ b/drivers/acpi/processor_idle.c
> >>>> @@ -1252,7 +1252,7 @@ static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
> >>>>
> >>>> dev->cpu = pr->id;
> >>>> if (pr->flags.has_lpi)
> >>>> - return acpi_processor_ffh_lpi_probe(pr->id);
> >>>> + return 0;
> >>>>
> >>>> acpi_processor_setup_cpuidle_cx(pr, dev);
> >>>> return 0;
> >>>> @@ -1264,7 +1264,13 @@ static int acpi_processor_get_power_info(struct acpi_processor *pr)
> >>>>
> >>>> ret = acpi_processor_get_lpi_info(pr);
> >>>> if (ret)
> >>>> - ret = acpi_processor_get_cstate_info(pr);
> >>>> + return acpi_processor_get_cstate_info(pr);
> >>>> +
> >>>> + if (pr->flags.has_lpi) {
> >>>> + ret = acpi_processor_ffh_lpi_probe(pr->id);
> >>>> + if (ret)
> >>>> + pr_err("Processor FFH LPI state is invalid.\n");
> >>>> + }
> >>>>
> >>>> return ret;
> >>>> }
> >>>> --
> >>> Please reorder this behind the next patch in the series.
> >> Patch 2/3 depends on this patch.
> >> So I don't know how to reorder this patch.
> > I should have been more precise, sorry.
> >
> > Please first convert acpi_processor_setup_cpuidle_dev() to a void
> > function and then make the changes from this patch on top of that.
> The acpi_processor_ffh_lpi_probe may return an error.
> And acpi_processor_setup_cpuidle_dev can pass the error code to its
> caller(Although the caller ignored it currently).
If all of its callers ignore its return value, it can and arguably
should be a void function.
> It may be inapproprate to convert acpi_processor_setup_cpuidle_dev() to
> a void function directly if we doesn't move acpi_processor_ffh_lpi_probe
> out first.
> So I first relocate the position of acpi_processor_ffh_lpi_probe. Then
> changing it to a void function would be more logical.
>
> Or we need to drop the return value of acpi_processor_ffh_lpi_probe and
> convert acpi_processor_setup_cpuidle_dev to a void function, like:
> -->
>
> -static int acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
> - struct cpuidle_device *dev)
> +static void acpi_processor_setup_cpuidle_dev(struct acpi_processor *pr,
> + struct cpuidle_device *dev)
> {
> if (!pr->flags.power_setup_done || !pr->flags.power || !dev)
> - return -EINVAL;
> + return;
>
> dev->cpu = pr->id;
> if (pr->flags.has_lpi) {
> - return acpi_processor_ffh_lpi_probe();
> + acpi_processor_ffh_lpi_probe();
> + return;
> }
>
> acpi_processor_setup_cpuidle_cx(pr, dev);
> - return 0;
> }
>
> What do you think now?
Well, please see above.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-01-16 12:22 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-25 6:52 [PATCH 0/3] ACPI: processor: idle: Enhance LPI verification and Huisong Li
2025-11-25 6:52 ` [PATCH 1/3] ACPI: processor: idle: Relocate and verify acpi_processor_ffh_lpi_probe Huisong Li
2026-01-14 17:27 ` Rafael J. Wysocki
2026-01-15 12:09 ` lihuisong (C)
2026-01-15 13:06 ` Rafael J. Wysocki
2026-01-16 6:37 ` lihuisong (C)
2026-01-16 12:22 ` Rafael J. Wysocki
2025-11-25 6:52 ` [PATCH 2/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_dev to void Huisong Li
2025-11-25 6:52 ` [PATCH 3/3] ACPI: processor: idle: Redefine acpi_processor_setup_cpuidle_states " Huisong Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®