lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 28 Feb 2011 22:08:42 +0100
From:	"Rafael J. Wysocki" <rjw@...k.pl>
To:	Thomas Renninger <trenn@...e.de>, lenb@...nel.org
Cc:	mingo@...e.hu, linux-kernel@...r.kernel.org, mgross@...ux.intel.com
Subject: Re: [PATCH] pm_qos: Make pm_qos settings readable

On Sunday, February 27, 2011, Thomas Renninger wrote:
> I have a machine where entering deep C-states broke.
> pm_qos was a hot candidate, but I couldn't find any way to double
> check without the need of recompiling.
> 
> While in this case it was a driver bug (ath9k):
> https://bugzilla.kernel.org/show_bug.cgi?id=27532
> 
> powertop or others may want to read out cpu_dma_latency
> restrictions which could be the cause of preventing a machine
> entering deeper C-states.
> 
> Output with this patch:
> 
> # default value of 2000 * USEC_PER_SEC (0x77359400)
> cat /dev/network_latency |hexdump
> 0000000 9400 7735
> 0000004
> 
> # value of 55 us which is the reason for not entering C2
> cat /dev/cpu_dma_latency |hexdump
> 0000000 0037 0000
> 0000004
> 
> There is no reason to hide this info -> make pm_qos files readable.
> 
> Signed-off-by: Thomas Renninger <trenn@...e.de>
> CC: mgross@...ux.intel.com
> CC: mingo@...e.hu

Applied to suspend-2.6/linux-next.

Thanks,
Rafael


> ---
>  kernel/pm_qos_params.c |   24 ++++++++++++++++++++++++
>  1 files changed, 24 insertions(+), 0 deletions(-)
> 
> diff --git a/kernel/pm_qos_params.c b/kernel/pm_qos_params.c
> index aeaa7f8..0da058b 100644
> --- a/kernel/pm_qos_params.c
> +++ b/kernel/pm_qos_params.c
> @@ -103,11 +103,14 @@ static struct pm_qos_object *pm_qos_array[] = {
>  
>  static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
>  		size_t count, loff_t *f_pos);
> +static ssize_t pm_qos_power_read(struct file *filp, char __user *buf,
> +		size_t count, loff_t *f_pos);
>  static int pm_qos_power_open(struct inode *inode, struct file *filp);
>  static int pm_qos_power_release(struct inode *inode, struct file *filp);
>  
>  static const struct file_operations pm_qos_power_fops = {
>  	.write = pm_qos_power_write,
> +	.read = pm_qos_power_read,
>  	.open = pm_qos_power_open,
>  	.release = pm_qos_power_release,
>  	.llseek = noop_llseek,
> @@ -376,6 +379,27 @@ static int pm_qos_power_release(struct inode *inode, struct file *filp)
>  }
>  
>  
> +static ssize_t pm_qos_power_read(struct file *filp, char __user *buf,
> +		size_t count, loff_t *f_pos)
> +{
> +	s32 value;
> +	unsigned long flags;
> +	struct pm_qos_object *o;
> +	struct pm_qos_request_list *pm_qos_req = filp->private_data;;
> +
> +	if (!pm_qos_req)
> +		return -EINVAL;
> +	if (!pm_qos_request_active(pm_qos_req))
> +		return -EINVAL;
> +
> +	o = pm_qos_array[pm_qos_req->pm_qos_class];
> +	spin_lock_irqsave(&pm_qos_lock, flags);
> +	value = pm_qos_get_value(o);
> +	spin_unlock_irqrestore(&pm_qos_lock, flags);
> +
> +	return simple_read_from_buffer(buf, count, f_pos, &value, sizeof(s32));
> +}
> +
>  static ssize_t pm_qos_power_write(struct file *filp, const char __user *buf,
>  		size_t count, loff_t *f_pos)
>  {
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ