On Wednesday 07 November 2007 19:56, Zhao Yakui wrote:
> Subject: ACPI :Add the _TPC throttling limit for TSS
> >From : Zhao Yakui <[EMAIL PROTECTED]>
>
> When T-state limit change notification is received, OSPM should
> evaluate the _TPC object and change the current T-State according to the new
> limit.
>
> Signed-off-by: Zhao Yakui <[EMAIL PROTECTED]>
> Signed-off-by: Li Shaohua <[EMAIL PROTECTED]>
>
> ---
> drivers/acpi/processor_throttling.c | 49
> +++++++++++++++++++++++++++++++++++-
> 1 file changed, 48 insertions(+), 1 deletion(-)
>
> Index: linux-2.6.24-rc1/drivers/acpi/processor_throttling.c
> ===================================================================
> --- linux-2.6.24-rc1.orig/drivers/acpi/processor_throttling.c
> +++ linux-2.6.24-rc1/drivers/acpi/processor_throttling.c
> @@ -70,7 +70,54 @@ static int acpi_processor_get_platform_l
>
> int acpi_processor_tstate_has_changed(struct acpi_processor *pr)
> {
> - return acpi_processor_get_platform_limit(pr);
> + int result = 0;
> + int throttling_limit;
> + int current_state;
> + struct acpi_processor_limit *limit;
> + int target_state;
> +
> + result = acpi_processor_get_platform_limit(pr);
> + if (result) {
> + /* Throttling Limit is unsupported */
> + return result;
> + }
> +
> + throttling_limit = pr->throttling_platform_limit;
> + if (throttling_limit >= pr->throttling.state_count) {
> + /* Uncorrect Throttling Limit */
> + return -EINVAL;
> + }
> +
> + current_state = pr->throttling.state;
> + if (current_state >= throttling_limit) {
probably don't need to check for == here
> + /*
> + * The current state can meet with the requirement of
> + * _TPC limit. But it is reasonable that OSPM changes
> + * t-states from high to low for better performance.
> + * Of course the limit condition of thermal
> + * and user should be considered.
> + */
> + limit = &pr->limit;
> + target_state = throttling_limit;
> + if (limit->thermal.tx > target_state)
> + target_state = limit->thermal.tx;
> + if (limit->user.tx > target_state)
> + target_state = limit->user.tx;
> + if (target_state == current_state) {
and don't need the corresponding == case here.
> + /* unnecessary to change T-state */
> + return 0;
> + }
> + } else {
> + /*
> + * If the current state is lower than the limit of _TPC, it
> + * will be forced to switch to the throttling state defined
> + * by throttling_platfor_limit.
> + * Because the previous state meets with the limit condition
> + * of thermal and user, it is unnecessary to check it again.
> + */
> + target_state = throttling_limit;
> + }
> + return acpi_processor_set_throttling(pr, target_state);
> }
>
> /*
>
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html