http://bugzilla.kernel.org/show_bug.cgi?id=6519





------- Additional Comments From [EMAIL PROTECTED]  2006-05-15 11:18 -------

Pretty good for a Luddite - thanks.

I've added Linus to cc, which means that this discussion should proceed via
email, please.  Just do a reply-to-all, make sure that
[EMAIL PROTECTED] remains on cc.


[EMAIL PROTECTED] wrote:
>
> http://bugzilla.kernel.org/show_bug.cgi?id=6519
> 
> 
> 
> 
> 
> ------- Additional Comments From [EMAIL PROTECTED]  2006-05-15 11:01 -------
> Progress: git bisect identified the following revision:
> 
> --------8<--------
> 2203d6ed448ff3b777ee6bb614a53e686b483e5b is first bad commit
> diff-tree 2203d6ed448ff3b777ee6bb614a53e686b483e5b (from
> 2656c076e31a3ce3ab2a987a578e7122dc2af51d)
> Author: Linus Torvalds <[EMAIL PROTECTED]>
> Date:   Fri Nov 18 07:29:51 2005 -0800
> 
>     Fix ACPI processor power block initialization
> 
>     Properly clear the memory, and set "pr->flags.power" only if a C2 or
>     deeper state is valid (to make the code match both the comment and
>     previous behaviour).
> 
>     This fixes a boot-time lockup reported by Maneesh Soni when using
>     "maxcpus=1".
> 
>     Acked-by: Maneesh Soni <[EMAIL PROTECTED]>
>     Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
> 
> :040000 040000 52be621b960ae192b36acf778c966d78ff5edbe2
> 04c183ce141dab8cdff049c1dae379104b637ed4 M      drivers
> 
> ------------------------ drivers/acpi/processor_idle.c 
> ------------------------
> index 573b6a9..70d8a6e 100644
> @@ -514,8 +514,6 @@ static int acpi_processor_set_power_poli
>  
>  static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
>  {
> -     int i;
> -
>       ACPI_FUNCTION_TRACE("acpi_processor_get_power_info_fadt");
>  
>       if (!pr)
> @@ -524,8 +522,7 @@ static int acpi_processor_get_power_info
>       if (!pr->pblk)
>               return_VALUE(-ENODEV);
>  
> -     for (i = 0; i < ACPI_PROCESSOR_MAX_POWER; i++)
> -             memset(pr->power.states, 0, sizeof(struct acpi_processor_cx));
> +     memset(pr->power.states, 0, sizeof(pr->power.states));
>  
>       /* if info is obtained from pblk/fadt, type equals state */
>       pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1;
> @@ -555,13 +552,9 @@ static int acpi_processor_get_power_info
>  
>  static int acpi_processor_get_power_info_default_c1(struct acpi_processor 
> *pr)
>  {
> -     int i;
> -
>       ACPI_FUNCTION_TRACE("acpi_processor_get_power_info_default_c1");
>  
> -     for (i = 0; i < ACPI_PROCESSOR_MAX_POWER; i++)
> -             memset(&(pr->power.states[i]), 0,
> -                    sizeof(struct acpi_processor_cx));
> +     memset(pr->power.states, 0, sizeof(pr->power.states));
>  
>       /* if info is obtained from pblk/fadt, type equals state */
>       pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1;
> @@ -873,7 +866,8 @@ static int acpi_processor_get_power_info
>       for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) {
>               if (pr->power.states[i].valid) {
>                       pr->power.count = i;
> -                     pr->flags.power = 1;
> +                     if (pr->power.states[i].type >= ACPI_STATE_C2)
> +                             pr->flags.power = 1;
>               }
>       }
>  
> --------8<--------
> 
> The last change in the diff, in acpi_processor_get_power_info, is what makes 
> the
> difference: commenting out the "if (pr->power.states[i].type >= 
> ACPI_STATE_C2)"
> restores the power saving in 2.6.16.14 .
> 
> I know nothing about kernel internals so the following may not be well 
> informed.
> I'm inclined to think that the revision is not blameworthy in itself, but 
> rather
> exposes an underlying problem. The comment above this bit of code says, 'if 
> one
> state of type C2 or C3 is available, mark this CPU as being "idle 
> manageable"'.
> As the commit log says, the revision makes the code match the comment.
> 
> What happens in my case is revealed after enabling some debug statements:
> 
> --------8<--------
> acpi_processor-0926 [07] processor_get_power_in: ----Entry
> acpi_processor-0621 [08] processor_get_power_in: ----Entry
> acpi_processor-0634 [08] processor_get_power_in: ----Exit- 0000000000000000
> acpi_processor-0646 [08] processor_get_power_in: ----Entry
> acpi_processor-0660 [08] processor_get_power_in: No _CST, giving up
> acpi_processor-0661 [08] processor_get_power_in: ----Exit- FFFFFFFFFFFFFFED
> acpi_processor-0582 [08] processor_get_power_in: ----Entry
> acpi_processor-0614 [08] processor_get_power_in: lvl2[0x00004014] 
> lvl3[0x00004015]
> acpi_processor-0616 [08] processor_get_power_in: ----Exit- 0000000000000000
> acpi_processor-0774 [08] processor_power_verify: ----Entry
> acpi_processor-0785 [08] processor_power_verify: latency too large [101]
> acpi_processor-0786 [08] processor_power_verify: ----Exit-
> acpi_processor-0804 [08] processor_power_verify: ----Entry
> acpi_processor-0815 [08] processor_power_verify: latency too large [1001]
> acpi_processor-0816 [08] processor_power_verify: ----Exit-
> acpi_processor-0511 [08] processor_set_power_po: ----Entry
> acpi_processor-0577 [08] processor_set_power_po: ----Exit- 0000000000000000
> acpi_processor-0963 [07] processor_get_power_in: ----Exit- 0000000000000000
> ACPI: CPU0 (power states: C1[C1])
> --------8<--------
> 
> So in acpi_processor_get_power_info, acpi_processor_get_power_info_cst fails 
> and
> acpi_processor_get_power_info_fadt is called. The latter finds states C2 and 
> C3
> but assigns latencies which, suspiciously, are each 1 greater than the
> permissible maximum. Would these be dummy values that get inserted when 
> genuine
> values could not be read?
> 
> 
> ------- You are receiving this mail because: -------
> You are on the CC list for the bug, or are watching someone who is.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
acpi-bugzilla mailing list
acpi-bugzilla@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/acpi-bugzilla

Reply via email to