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]
Message-ID: <s5h3aet8joa.wl%tiwai@suse.de>
Date:	Thu, 05 Feb 2009 07:47:01 +0100
From:	Takashi Iwai <tiwai@...e.de>
To:	Andrew Morton <akpm@...ux-foundation.org>
Cc:	Alex Romosan <romosan@...orax.lbl.gov>,
	linux-kernel@...r.kernel.org
Subject: Re: 2.6.29-rc3: weird process after resume

At Wed, 4 Feb 2009 18:56:45 -0800,
Andrew Morton wrote:
> 
> On Wed, 4 Feb 2009 18:31:42 -0800 Andrew Morton <akpm@...ux-foundation.org> wrote:
> 
> > On Wed, 04 Feb 2009 17:45:13 -0800 Alex Romosan <romosan@...orax.lbl.gov> wrote:
> > 
> > > Andrew Morton <akpm@...ux-foundation.org> writes:
> > > 
> > > > On Wed, 04 Feb 2009 09:25:20 -0800
> > > > Alex Romosan <romosan@...orax.lbl.gov> wrote:
> > > >
> > > >> this is on a thinkpad t61p with an intel core2 cpu. i just noticed
> > > >> that after resuming from suspending to memory i get a weirdly named
> > > >> process. i did a ps before and after and the only difference was that
> > > >> before i had this process:
> > > >> 
> > > >>   [hda0/1]
> > > >> 
> > > >> and after this one:
> > > >> 
> > > >>   [__?__;??____D__"?______]
> > > >> 
> > > >> with everything else being the same. the laptop seems to be working
> > > >> fine and the problem could have been there for a while but i just
> > > >> didn't notice it. i am including my .config file. let me know if you
> > > >> need anything else.
> > > >
> > > > Were earlier kernels OK?  If so, which version?
> > > 
> > > i just tried 2.6.28 and there was no [hda0] kernel thread. 2.6.29-rc1
> > > and rc2 never resumed from suspend so i couldn't really try it.
> > > 
> > > > What the heck is that kernel thread anyway?  It looks like something
> > > > derived from an IDE device.
> > > 
> > > i have no idea. hda is the cdrom (the disk is sata and shows up as
> > > sda).
> > > 
> > 
> > <rummages through a 68MB diff for a while>
> > 
> > <finds a plum>
> > 
> > +       snprintf(qname, sizeof(qname), "hda%d", card->number);
> > +       bus->workq = create_workqueue(qname);
> > +       if (!bus->workq) {
> > +               snd_printk(KERN_ERR "cannot create workqueue %s\n", qname);
> > +               kfree(bus);
> > +               return -ENOMEM;
> > +       }
> > 
> > so it's not IDE after all.
> > 
> > commit 6acaed38a32e8571e92cfc832b971f9e4450c207
> > Author:     Takashi Iwai <tiwai@...e.de>
> > AuthorDate: Mon Jan 12 10:09:24 2009 +0100
> > Commit:     Takashi Iwai <tiwai@...e.de>
> > CommitDate: Mon Jan 12 10:33:56 2009 +0100
> > 
> >     ALSA: hda - Use own workqueue
> > 
> 
> btw.  Please use create_singlethread_workqueue() if at all possible.  I
> don't think we need a thread per CPU here.

Sorry I always forget that...

Alex, could you try the patch below?  It's now in sound git tree:
   git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6.git


thanks,

Takashi

===
>From e8c0ee5d77ec0f144c753a622c67dd96fa195d50 Mon Sep 17 00:00:00 2001
From: Takashi Iwai <tiwai@...e.de>
Date: Thu, 5 Feb 2009 07:34:28 +0100
Subject: [PATCH] ALSA: hda - Fix misc workqueue issues

Some fixes regarding snd-hda-intel workqueue:
- Use create_singlethread_workqueue() instead of create_workqueue()
  as per-CPU work isn't required.
- Allocate workq name string properly
- Renamed the workq name to "hd-audio*" to be more obvious.

Signed-off-by: Takashi Iwai <tiwai@...e.de>
---
 sound/pci/hda/hda_codec.c |    9 +++++----
 sound/pci/hda/hda_codec.h |    1 +
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index b7bba7d..0b70813 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -487,7 +487,6 @@ int /*__devinit*/ snd_hda_bus_new(struct snd_card *card,
 {
 	struct hda_bus *bus;
 	int err;
-	char qname[8];
 	static struct snd_device_ops dev_ops = {
 		.dev_register = snd_hda_bus_dev_register,
 		.dev_free = snd_hda_bus_dev_free,
@@ -517,10 +516,12 @@ int /*__devinit*/ snd_hda_bus_new(struct snd_card *card,
 	mutex_init(&bus->cmd_mutex);
 	INIT_LIST_HEAD(&bus->codec_list);
 
-	snprintf(qname, sizeof(qname), "hda%d", card->number);
-	bus->workq = create_workqueue(qname);
+	snprintf(bus->workq_name, sizeof(bus->workq_name),
+		 "hd-audio%d", card->number);
+	bus->workq = create_singlethread_workqueue(bus->workq_name);
 	if (!bus->workq) {
-		snd_printk(KERN_ERR "cannot create workqueue %s\n", qname);
+		snd_printk(KERN_ERR "cannot create workqueue %s\n",
+			   bus->workq_name);
 		kfree(bus);
 		return -ENOMEM;
 	}
diff --git a/sound/pci/hda/hda_codec.h b/sound/pci/hda/hda_codec.h
index 5810ef5..09a332a 100644
--- a/sound/pci/hda/hda_codec.h
+++ b/sound/pci/hda/hda_codec.h
@@ -614,6 +614,7 @@ struct hda_bus {
 
 	/* unsolicited event queue */
 	struct hda_bus_unsolicited *unsol;
+	char workq_name[16];
 	struct workqueue_struct *workq;	/* common workqueue for codecs */
 
 	/* assigned PCMs */
-- 
1.6.1.2

--
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