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

Reply via email to