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] [day] [month] [year] [list]
Date:	Tue, 10 Apr 2012 14:56:09 +0200
From:	Takashi Iwai <tiwai@...e.de>
To:	Fengguang Wu <fengguang.wu@...el.com>
Cc:	Stephen Warren <swarren@...dotorg.org>,
	alsa-devel@...a-project.org,
	Nick Bowler <nbowler@...iptictech.com>,
	Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
	Keith Packard <keithp@...thp.com>
Subject: Re: [PATCH] alsa: hide HDMI/ELD printks unless in debug kernels

At Tue, 10 Apr 2012 17:00:35 +0800,
Fengguang Wu wrote:
> 
> On Tue, Apr 10, 2012 at 08:08:56AM +0200, Takashi Iwai wrote:
> > At Mon, 09 Apr 2012 09:12:44 -0600,
> > Stephen Warren wrote:
> > > 
> > > On 04/08/2012 08:15 PM, Fengguang Wu wrote:
> > > > These trivial messages will show up repeatedly on hot plug as well as
> > > > video mode changes, which could be annoying.
> > > > 
> > > > Signed-off-by: Wu Fengguang <fengguang.wu@...el.com>
> > > 
> > > Those messages are very useful for end-users to diagnose problems with
> > > HDMI audio. Is there a way to make the messages dynamic, so users can
> > > get them if they want, without recompiling their kernel?
> > 
> > We can define a new macro like below, add call like _snd_printd(2,
> > ....) instead of snd_printd().
> > (Yes, the number 2 can be replaced better in an enum, too.)
> > 
> > In future, we should move to the standard dynamic_printk, but a patch
> > like this would be a good compromise for merging to 3.4 kernel, IMO.
> 
> OK. How about this?
> 
> Subject: alsa: hide HDMI/ELD printks unless snd.debug=2
> Date: Fri Nov 11 19:09:36 CST 2011

Looks good to me.  Applied it now.
Thanks!

Takashi


> 
> Also remove two warnings when CONFIG_SND_DEBUG is not set:
> 
> sound/pci/hda/patch_hdmi.c: In function ‘hdmi_intrinsic_event’:
> sound/pci/hda/patch_hdmi.c:761:6: warning: unused variable ‘eldv’ [-Wunused-variable]
> sound/pci/hda/patch_hdmi.c:760:6: warning: unused variable ‘pd’ [-Wunused-variable]
> 
> Signed-off-by: Wu Fengguang <fengguang.wu@...el.com>
> ---
>  include/sound/core.h       |   10 ++++++++++
>  sound/pci/hda/hda_eld.c    |    6 +++---
>  sound/pci/hda/patch_hdmi.c |    9 ++++-----
>  3 files changed, 17 insertions(+), 8 deletions(-)
> 
> --- linux.orig/sound/pci/hda/hda_eld.c	2012-04-10 16:51:00.737707853 +0800
> +++ linux/sound/pci/hda/hda_eld.c	2012-04-10 16:51:08.105708029 +0800
> @@ -418,7 +418,7 @@ static void hdmi_show_short_audio_desc(s
>  	else
>  		buf2[0] = '\0';
>  
> -	printk(KERN_INFO "HDMI: supports coding type %s:"
> +	_snd_printd(SND_PR_VERBOSE, "HDMI: supports coding type %s:"
>  			" channels = %d, rates =%s%s\n",
>  			cea_audio_coding_type_names[a->format],
>  			a->channels,
> @@ -442,14 +442,14 @@ void snd_hdmi_show_eld(struct hdmi_eld *
>  {
>  	int i;
>  
> -	printk(KERN_INFO "HDMI: detected monitor %s at connection type %s\n",
> +	_snd_printd(SND_PR_VERBOSE, "HDMI: detected monitor %s at connection type %s\n",
>  			e->monitor_name,
>  			eld_connection_type_names[e->conn_type]);
>  
>  	if (e->spk_alloc) {
>  		char buf[SND_PRINT_CHANNEL_ALLOCATION_ADVISED_BUFSIZE];
>  		snd_print_channel_allocation(e->spk_alloc, buf, sizeof(buf));
> -		printk(KERN_INFO "HDMI: available speakers:%s\n", buf);
> +		_snd_printd(SND_PR_VERBOSE, "HDMI: available speakers:%s\n", buf);
>  	}
>  
>  	for (i = 0; i < e->sad_count; i++)
> --- linux.orig/sound/pci/hda/patch_hdmi.c	2012-04-10 16:51:00.745707854 +0800
> +++ linux/sound/pci/hda/patch_hdmi.c	2012-04-10 16:55:35.813714391 +0800
> @@ -757,8 +757,6 @@ static void hdmi_intrinsic_event(struct
>  	struct hdmi_spec *spec = codec->spec;
>  	int tag = res >> AC_UNSOL_RES_TAG_SHIFT;
>  	int pin_nid;
> -	int pd = !!(res & AC_UNSOL_RES_PD);
> -	int eldv = !!(res & AC_UNSOL_RES_ELDV);
>  	int pin_idx;
>  	struct hda_jack_tbl *jack;
>  
> @@ -768,9 +766,10 @@ static void hdmi_intrinsic_event(struct
>  	pin_nid = jack->nid;
>  	jack->jack_dirty = 1;
>  
> -	printk(KERN_INFO
> +	_snd_printd(SND_PR_VERBOSE,
>  		"HDMI hot plug event: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n",
> -		codec->addr, pin_nid, pd, eldv);
> +		codec->addr, pin_nid,
> +		!!(res & AC_UNSOL_RES_PD), !!(res & AC_UNSOL_RES_ELDV));
>  
>  	pin_idx = pin_nid_to_pin_index(spec, pin_nid);
>  	if (pin_idx < 0)
> @@ -992,7 +991,7 @@ static void hdmi_present_sense(struct hd
>  	if (eld->monitor_present)
>  		eld_valid	= !!(present & AC_PINSENSE_ELDV);
>  
> -	printk(KERN_INFO
> +	_snd_printd(SND_PR_VERBOSE,
>  		"HDMI status: Codec=%d Pin=%d Presence_Detect=%d ELD_Valid=%d\n",
>  		codec->addr, pin_nid, eld->monitor_present, eld_valid);
>  
> --- linux.orig/include/sound/core.h	2012-04-10 16:51:00.757707854 +0800
> +++ linux/include/sound/core.h	2012-04-10 16:51:08.105708029 +0800
> @@ -325,6 +325,13 @@ void release_and_free_resource(struct re
>  
>  /* --- */
>  
> +/* sound printk debug levels */
> +enum {
> +	SND_PR_ALWAYS,
> +	SND_PR_DEBUG,
> +	SND_PR_VERBOSE,
> +};
> +
>  #if defined(CONFIG_SND_DEBUG) || defined(CONFIG_SND_VERBOSE_PRINTK)
>  __printf(4, 5)
>  void __snd_printk(unsigned int level, const char *file, int line,
> @@ -354,6 +361,8 @@ void __snd_printk(unsigned int level, co
>   */
>  #define snd_printd(fmt, args...) \
>  	__snd_printk(1, __FILE__, __LINE__, fmt, ##args)
> +#define _snd_printd(level, fmt, args...) \
> +	__snd_printk(level, __FILE__, __LINE__, fmt, ##args)
>  
>  /**
>   * snd_BUG - give a BUG warning message and stack trace
> @@ -383,6 +392,7 @@ void __snd_printk(unsigned int level, co
>  #else /* !CONFIG_SND_DEBUG */
>  
>  #define snd_printd(fmt, args...)	do { } while (0)
> +#define _snd_printd(level, fmt, args...) do { } while (0)
>  #define snd_BUG()			do { } while (0)
>  static inline int __snd_bug_on(int cond)
>  {
> 
--
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