Re: [Fwd: Fwd: [patch] ACPI: fix cpufreq regression]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Acked-by: Len Brown <len.brown@xxxxxxxxx>

On Tuesday 23 January 2007 11:16, Thomas Renninger wrote:
> Can this one also be added to 2.6.19.X kernel.
> Beside the Thinkpad it also seems to fix other system:
> http://bugzilla.kernel.org/show_bug.cgi?id=7859
> 
> 
> Thanks,
> 
>     Thomas
> 
> -------- Forwarded Message --------
> From: Len Brown <lenb@xxxxxxxxxx>
> To: linux-acpi@xxxxxxxxxxxxxxx
> Subject: Fwd: [patch] ACPI: fix cpufreq regression
> Date: 	Tue, 16 Jan 2007 22:13:14 -0500
> 
> > nobody else with a T60 noticed this since November?
> 
> I expect it's because the patch which caused the regression,
> seemed to be rather safe and came in quite late...
> 
> 
> 
> ----------  Forwarded Message  ----------
> 
> Subject: [patch] ACPI: fix cpufreq regression
> Date: Tuesday 16 January 2007 12:09
> From: Ingo Molnar <mingo@xxxxxxx>
> To: Andrew Morton <akpm@xxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx, Dave Jones <davej@xxxxxxxxxx>, Linus Torvalds <torvalds@xxxxxxxx>, Len Brown <lenb@xxxxxxxxxx>
> 
> Subject: [patch] ACPI: fix cpufreq regression
> From: Ingo Molnar <mingo@xxxxxxx>
> 
> recently cpufreq support on my laptop (Lenovo T60) broke completely: 
> when it's plugged into AC it would never go higher than 1 GHz - neither 
> 1.3 GHz nor 1.83 GHz is possible - no matter which governor (userspace, 
> speed or ondemand) is used.
> 
> after some cpufreq debugging i tracked the regression back to the 
> following (totally correct) bug-fix commit:
> 
>    commit 0916bd3ebb7cefdd0f432e8491abe24f4b5a101e
>    Author: Dave Jones <davej@xxxxxxxxxx>
>    Date:   Wed Nov 22 20:42:01 2006 -0500
> 
>     [PATCH] Correct bound checking from the value returned from _PPC method.
> 
> this bugfix, which makes other laptops work, made a previously hidden 
> (BIOS) bug visible on my laptop.
> 
> The bug is the following: if the _PPC (Performance Present Capabilities) 
> optional ACPI object is queried /after/ bootup then the BIOS reports an 
> incorrect value of '2'.
> 
> My laptop (Lenovo T60) has the following performance states supported:
> 
>    0: 1833000
>    1: 1333000
>    2: 1000000
> 
> Per ACPI specification, a _PPC value of '0' means that all 3 performance 
> states are usable. A _PPC value of '1' means states 1 .. 2 are usable, a 
> value of '2' means only state '2' (slowest) is usable.
> 
> now, the _PPC object is optional, and it also comes with notification. 
> Furthermore, when a CPU object is initialized, the _PPC object is 
> initialized as well. So the following evaluation of the _PPC object is 
> superfluous:
> 
>  [<c028ba5f>] acpi_processor_get_platform_limit+0xa1/0xaf
>  [<c028c040>] acpi_processor_register_performance+0x3b9/0x3ef
>  [<c0111a85>] acpi_cpufreq_cpu_init+0xb7/0x596
>  [<c03dab74>] cpufreq_add_dev+0x160/0x4a8
>  [<c02bed90>] sysdev_driver_register+0x5a/0xa0
>  [<c03d9c4c>] cpufreq_register_driver+0xb4/0x176
>  [<c068ac08>] acpi_cpufreq_init+0xe5/0xeb
>  [<c010056e>] init+0x14f/0x3dd
> 
> and this is the point where my laptop's BIOS returns the incorrect value 
> of '2'. Note that it has not sent any notification event, so the value 
> is probably not really intentional (possibly spurious), and Windows 
> likely doesnt query it after bootup either. Maybe the value is kept at 
> '2' normally, and is only set to the real value when a true asynchronous 
> event (such as AC plug event, battery switch, etc.) occurs.
> 
> So i /think/ this is a grey area of the ACPI spec: per the letter of the 
> spec the _PPC value only changes when notified, so there's no reason to 
> query it after the system has booted up. So in my opinion the best (and 
> most compatible) strategy would be to do the change below, and to not 
> evaluate the _PPC object in the acpi_processor_get_performance_info() 
> call, but only evaluate it if _PPC is present during CPU object init, or 
> if it's notified during an asynchronous event. This change is more 
> permissive than the previous logic, so it definitely shouldnt break any 
> existing system.
> 
> This also happens to fix my laptop, which is merrily chugging along at 
> 1.83 GHz now. Yay!
> 
> Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
> ---
>  drivers/acpi/processor_perflib.c |    4 ----
>  1 file changed, 4 deletions(-)
> 
> Index: linux/drivers/acpi/processor_perflib.c
> ===================================================================
> --- linux.orig/drivers/acpi/processor_perflib.c
> +++ linux/drivers/acpi/processor_perflib.c
> @@ -322,10 +322,6 @@ static int acpi_processor_get_performanc
>  	if (result)
>  		return result;
>  
> -	result = acpi_processor_get_platform_limit(pr);
> -	if (result)
> -		return result;
> -
>  	return 0;
>  }
>  
> -
> 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/
> 
> 
> -------------------------------------------------------
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux