Re: [PATCH_1/4] [ACPI]:Add the _TPC throttling limit for TSS

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

 



On Wednesday 07 November 2007 19:56, Zhao Yakui wrote:
> Subject: ACPI :Add the _TPC throttling limit for TSS
> >From : Zhao Yakui <yakui.zhao@xxxxxxxxx>
> 
> 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 <yakui.zhao@xxxxxxxxx>
> Signed-off-by: Li Shaohua <shaohua.li@xxxxxxxxx>
> 
> ---
>  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 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