Re: Followup on 2.6.13-rc3 ACPI processor C-state regression

From: Andrew Morton
Date: Fri Jul 29 2005 - 13:02:26 EST


Kevin Radloff <radsaq@xxxxxxxxx> wrote:
>
> Previously, I had said that in 2.6.13-rc3, C2/C3 capabilities were not
> detected on my Fujitsu Lifebook P7010D. I found that in the merge at:
>
> http://kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blobdiff;h=893b074e3d1a48a4390cf84b4c1a10ef6be2460c;hp=c9d671cf7857dbc7101e99d469fa24eed711ac60;hb=5028770a42e7bc4d15791a44c28f0ad539323807;f=drivers/acpi/processor_idle.c
>
> .. in the section at (please forgive my destruction of the formatting) ...
>
> @@ -787,10 +843,7 @@ static int acpi_processor_get_power_info
> if ((result) || (acpi_processor_power_verify(pr) < 2)) {
> result = acpi_processor_get_power_info_fadt(pr);
> if (result)
> - return_VALUE(result);
> -
> - if (acpi_processor_power_verify(pr) < 2)
> - return_VALUE(-ENODEV);
> + result = acpi_processor_get_power_info_default_c1(pr);
> }
>
> .. a call to acpi_processor_power_verify() is removed, which breaks
> detection of C2/C3 capabilities if the above
> acpi_processor_get_power_info_cst() failed. It it had succeeded (and
> returned 0), then acpi_processor_power_verify() is called in the
> conditional statement, which will set the valid flags for C2/C3. But
> if it fails, like on my laptop, then the valid flags will never be
> set, despite the fact that the acpi_processor_get_power_info_fadt()
> function finds the necessary info for a subsequent
> acpi_processor_power_verify() call to succeed.
>
> I don't know what exactly the proper fix here is (with the
> introduction of the acpi_processor_get_power_info_default_c1()
> function, that is), but simply reversing this part of the patch fixes
> detection of C2/C3 on my laptop.
>

Len, Kevin confirms that the below patch fixes the above regression for
him. Should we merge it now?


From: Jindrich Makovicka <makovick@xxxxxxxxxxxxxxxxxxxx>

Re-enable C2/C3 states for systems without CST. Fixes a regression after
the patch for C2/C3 support for multiprocessors
(http://bugme.osdl.org/show_bug.cgi?id=4401), which accidentally removed
the acpi_processor_power_verify() call.

Signed-off-by: Jindrich Makovicka <makovick@xxxxxxxxxxxxxxxxxxxx>
Cc: "Brown, Len" <len.brown@xxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

drivers/acpi/processor_idle.c | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN drivers/acpi/processor_idle.c~acpi-re-enable-c2-c3-cpu-states-for-systems-without drivers/acpi/processor_idle.c
--- devel/drivers/acpi/processor_idle.c~acpi-re-enable-c2-c3-cpu-states-for-systems-without 2005-07-14 15:53:47.000000000 -0700
+++ devel-akpm/drivers/acpi/processor_idle.c 2005-07-14 15:53:47.000000000 -0700
@@ -881,7 +881,7 @@ static int acpi_processor_get_power_info
result = acpi_processor_get_power_info_cst(pr);
if ((result) || (acpi_processor_power_verify(pr) < 2)) {
result = acpi_processor_get_power_info_fadt(pr);
- if (result)
+ if ((result) || acpi_processor_power_verify(pr) < 2)
result = acpi_processor_get_power_info_default_c1(pr);
}

_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/