alsa-devel.alsa-project.org archive mirror
 help / color / mirror / Atom feed
From: Philippe Carriere <philippe-f.carriere@wanadoo.fr>
To: Karsten Wiese <fzu@wemgehoertderstaat.de>
Cc: Takashi Iwai <tiwai@suse.de>,
	alsa-devel@alsa-project.org,
	Federico Briata <federicobriata@gmail.com>
Subject: Re: (no subject)
Date: Thu, 29 Jan 2009 09:35:53 +0100	[thread overview]
Message-ID: <1233218153.3257.25.camel@localhost.localdomain> (raw)
In-Reply-To: <200901270116.02701.fzu@wemgehoertderstaat.de>

[-- Attachment #1: Type: text/plain, Size: 8455 bytes --]

Hi Karsten,

I successfully tested your new version of the patch and sent a
"tested:by" to linux-usb@vger.kernel.org today (see attached).
Hope it will speed up the process.

Regards,

Phil.

Le mardi 27 janvier 2009 à 01:16 +0100, Karsten Wiese a écrit :
> Am Dienstag, 14. Oktober 2008 schrieb Philippe Carriere:
> > Might this patch (the original one, without features yet implemented in
> > 2.6.26, and an extremely slight modification to fit it) I use on Fedora
> > kernel (the patch also applies as it stands to vanilla) save works and
> > time ?
> 
> I resent the patch to linux-usb@vger.kernel.org today.
> Maybe it helps, if you post a "tested-by:" there.
> 
> Regards,
> Karsten
> 
> pièce jointe message de courriel (forwarded message), "Karsten Wiese
> <fzu@wemgehoertderstaat.de>: [RESEND][PATCH] USB: Prevent EHCI ITDs
> reusage while frame is active"
> > -------- Message transféré --------
> > De: Karsten Wiese <fzu@wemgehoertderstaat.de>
> > À: David Brownell <david-b@pacbell.net>
> > Cc: linux-usb@vger.kernel.org
> > Sujet: [RESEND][PATCH] USB: Prevent EHCI ITDs reusage while frame is
> > active
> > Date: Mon, 26 Jan 2009 14:32:51 +0100
> > 
> > pièce jointe document texte brut (forwarded message)
> > Hi,
> > 
> > this is a refresh to let patch fit ontop 2.6.29-rc2.
> > Changes from previous version:
> > - use variable clock_frame instead of hw_frame
> > - Patch Description exactified
> > snd_usb_us122l (in kernel since .28) needs it, if device is attached to
> > ehci.
> > 
> > thanks,
> > Karsten
> > 
> > 
> > 
> > ----------------------------------------------------------------------
> > From: Karsten Wiese <fzu@wemgehoertderstaat.de>
> > Date: Wed, 13 Feb 2008 22:22:09 +0100
> > Subject: [PATCH] USB: Prevent EHCI ITDs reusage while frame is active
> > 
> > ITDs can be detached from urbs, before the frame elapses. Now those ITDs are
> > immediately recycled.
> > If the ITD is reused before the frame elapses, the ITD becomes invalid
> > regarding the not yet elapsed frame.
> > Patch takes care of those ITDs by moving them into a new ehci member list
> > cached_itd_list. ITDs resting in cached_itd_list are moved back into their
> > stream's free_list once scan_periodic() detects that the active frame has
> > elapsed.
> > 
> > Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>
> > 
> > ---
> >  drivers/usb/host/ehci-hcd.c   |    2 +
> >  drivers/usb/host/ehci-mem.c   |    1 +
> >  drivers/usb/host/ehci-sched.c |   54 ++++++++++++++++++++++++++++++++++------
> >  drivers/usb/host/ehci.h       |    5 ++++
> >  4 files changed, 54 insertions(+), 8 deletions(-)
> > 
> > diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
> > index 4725d15..e551bb3 100644
> > --- a/drivers/usb/host/ehci-hcd.c
> > +++ b/drivers/usb/host/ehci-hcd.c
> > @@ -485,6 +485,7 @@ static int ehci_init(struct usb_hcd *hcd)
> >  	 * periodic_size can shrink by USBCMD update if hcc_params allows.
> >  	 */
> >  	ehci->periodic_size = DEFAULT_I_TDPS;
> > +	INIT_LIST_HEAD(&ehci->cached_itd_list);
> >  	if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
> >  		return retval;
> >  
> > @@ -497,6 +498,7 @@ static int ehci_init(struct usb_hcd *hcd)
> >  
> >  	ehci->reclaim = NULL;
> >  	ehci->next_uframe = -1;
> > +	ehci->clock_frame = -1;
> >  
> >  	/*
> >  	 * dedicate a qh for the async ring head, since we couldn't unlink
> > diff --git a/drivers/usb/host/ehci-mem.c b/drivers/usb/host/ehci-mem.c
> > index 0431397..10d5291 100644
> > --- a/drivers/usb/host/ehci-mem.c
> > +++ b/drivers/usb/host/ehci-mem.c
> > @@ -128,6 +128,7 @@ static inline void qh_put (struct ehci_qh *qh)
> >  
> >  static void ehci_mem_cleanup (struct ehci_hcd *ehci)
> >  {
> > +	free_cached_itd_list(ehci);
> >  	if (ehci->async)
> >  		qh_put (ehci->async);
> >  	ehci->async = NULL;
> > diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
> > index a081ee6..c1f7d5f 100644
> > --- a/drivers/usb/host/ehci-sched.c
> > +++ b/drivers/usb/host/ehci-sched.c
> > @@ -1004,7 +1004,8 @@ iso_stream_put(struct ehci_hcd *ehci, struct ehci_iso_stream *stream)
> >  
> >  		is_in = (stream->bEndpointAddress & USB_DIR_IN) ? 0x10 : 0;
> >  		stream->bEndpointAddress &= 0x0f;
> > -		stream->ep->hcpriv = NULL;
> > +		if (stream->ep)
> > +			stream->ep->hcpriv = NULL;
> >  
> >  		if (stream->rescheduled) {
> >  			ehci_info (ehci, "ep%d%s-iso rescheduled "
> > @@ -1653,14 +1654,26 @@ itd_complete (
> >  			(stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out");
> >  	}
> >  	iso_stream_put (ehci, stream);
> > -	/* OK to recycle this ITD now that its completion callback ran. */
> > +
> >  done:
> >  	usb_put_urb(urb);
> >  	itd->urb = NULL;
> > -	itd->stream = NULL;
> > -	list_move(&itd->itd_list, &stream->free_list);
> > -	iso_stream_put(ehci, stream);
> > -
> > +	if (ehci->clock_frame != itd->frame || itd->index[7] != -1) {
> > +		/* OK to recycle this ITD now. */
> > +		itd->stream = NULL;
> > +		list_move(&itd->itd_list, &stream->free_list);
> > +		iso_stream_put(ehci, stream);
> > +	} else {
> > +		/* HW might still start transactions based on this ITD.
> > +		   If its content changed that is. Move it to a safe place. */
> > +		list_move(&itd->itd_list, &ehci->cached_itd_list);
> > +		if (stream->refcount == 2) {
> > +			/* If iso_stream_put() would be called here, stream
> > +			   would be freed. Prevent stream's reusage instead. */
> > +			stream->ep->hcpriv = NULL;
> > +			stream->ep = NULL;
> > +		}
> > +	}
> >  	return retval;
> >  }
> >  
> > @@ -2101,6 +2114,20 @@ done:
> >  
> >  /*-------------------------------------------------------------------------*/
> >  
> > +static void free_cached_itd_list(struct ehci_hcd *ehci)
> > +{
> > +	struct ehci_itd *itd, *n;
> > +
> > +	list_for_each_entry_safe(itd, n, &ehci->cached_itd_list, itd_list) {
> > +		struct ehci_iso_stream	*stream = itd->stream;
> > +		itd->stream = NULL;
> > +		list_move(&itd->itd_list, &stream->free_list);
> > +		iso_stream_put(ehci, stream);
> > +	}
> > +}
> > +
> > +/*-------------------------------------------------------------------------*/
> > +
> >  static void
> >  scan_periodic (struct ehci_hcd *ehci)
> >  {
> > @@ -2115,10 +2142,17 @@ scan_periodic (struct ehci_hcd *ehci)
> >  	 * Touches as few pages as possible:  cache-friendly.
> >  	 */
> >  	now_uframe = ehci->next_uframe;
> > -	if (HC_IS_RUNNING (ehci_to_hcd(ehci)->state))
> > +	if (HC_IS_RUNNING(ehci_to_hcd(ehci)->state)) {
> >  		clock = ehci_readl(ehci, &ehci->regs->frame_index);
> > -	else
> > +		clock_frame = (clock >> 3) % ehci->periodic_size;
> > +	} else  {
> >  		clock = now_uframe + mod - 1;
> > +		clock_frame = -1;
> > +	}
> > +	if (ehci->clock_frame != clock_frame) {
> > +		free_cached_itd_list(ehci);
> > +		ehci->clock_frame = clock_frame;
> > +	}
> >  	clock %= mod;
> >  	clock_frame = clock >> 3;
> >  
> > @@ -2277,6 +2311,10 @@ restart:
> >  			/* rescan the rest of this frame, then ... */
> >  			clock = now;
> >  			clock_frame = clock >> 3;
> > +			if (ehci->clock_frame != clock_frame) {
> > +				free_cached_itd_list(ehci);
> > +				ehci->clock_frame = clock_frame;
> > +			}
> >  		} else {
> >  			now_uframe++;
> >  			now_uframe %= mod;
> > diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
> > index fb7054c..5262fb7 100644
> > --- a/drivers/usb/host/ehci.h
> > +++ b/drivers/usb/host/ehci.h
> > @@ -86,6 +86,9 @@ struct ehci_hcd {			/* one per controller */
> >  	union ehci_shadow	*pshadow;	/* mirror hw periodic table */
> >  	int			next_uframe;	/* scan periodic, start here */
> >  	unsigned		periodic_sched;	/* periodic activity count */
> > +	struct list_head	cached_itd_list; /* list of itds completed
> > +						    while frame hadn't yet elapsed */
> > +	unsigned		clock_frame;
> >  
> >  	/* per root hub port */
> >  	unsigned long		reset_done [EHCI_MAX_ROOT_PORTS];
> > @@ -220,6 +223,8 @@ timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)
> >  	}
> >  }
> >  
> > +static void free_cached_itd_list(struct ehci_hcd *ehci);
> > +
> >  /*-------------------------------------------------------------------------*/
> >  
> >  #include <linux/usb/ehci_def.h>

-- 
Philippe Carriere <philippe-f.carriere@wanadoo.fr>

[-- Attachment #2: tested_by:_Philippe_Carriere.txt --]
[-- Type: text/plain, Size: 11199 bytes --]

>From philippe-f.carriere@wanadoo.fr Thu Jan 29 09:30:07 2009
Subject: [RESEND][PATCH] USB: Prevent EHCI ITDs reusage while frame is
 active: tested by: Philippe Carriere.
From: Philippe Carriere <philippe-f.carriere@wanadoo.fr>
To: linux-usb@vger.kernel.org
Content-Type: multipart/mixed; boundary="=-VmmaepDIq/JbLd+TeS0C"
Message-Id: <1233217786.3257.20.camel@localhost.localdomain>
Mime-Version: 1.0
X-Mailer: Evolution 2.24.3 (2.24.3-1.fc10) 
Date: Thu, 29 Jan 2009 09:30:07 +0100
X-Evolution-Format: text/plain
X-Evolution-Account: 1197104178.3652.20@pollux.mecaflu.ec-lyon.fr
X-Evolution-Transport:
 smtp://philippe-f.carriere;auth=PLAIN@smtp.wanadoo.fr/;use_ssl=never
X-Evolution-Fcc: mbox:/home/philippe/.evolution/mail/local#Sent


--=-VmmaepDIq/JbLd+TeS0C
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

 Hi,

I successfully tested the refreshed patch of Karsten using Fedora
rawhide packages. Following are  some informations on the test:

original kernel: 2.6.29-0.53.rc2.git1.fc11.x86_64
patched kernel: Linux 2.6.29-0.53.rc2.git1.ehcius122l.fc11.x86_64 #1 SMP
Wed Jan 28 22:48:01 CET 2009 x86_64 x86_64 x86_64 GNU/Linux
alsa: alsa-lib-1.0.19-1.fc11, alsa-plugins-usbstream-1.0.18
jack: jack-audio-connection-kit-0.116.1-3.fc11
qjackctl: qjackctl-0.3.3-1.fc10
audacious: audacious-1.5.1-5.fc11

after plugin the Tascam US-122L:

[root@pollux Test]# tail /var/log/messages
Jan 29 08:05:53 pollux kernel: usb 2-6: new high speed USB device using
ehci_hcd and address 4
Jan 29 08:05:53 pollux kernel: usb 2-6: config 1 interface 1 altsetting
1 bulk endpoint 0x83 has invalid maxpacket 9
Jan 29 08:05:53 pollux kernel: usb 2-6: New USB device found,
idVendor=0644, idProduct=800e
Jan 29 08:05:53 pollux kernel: usb 2-6: New USB device strings: Mfr=1,
Product=2, SerialNumber=3
Jan 29 08:05:53 pollux kernel: usb 2-6: Product: US-122L
Jan 29 08:05:53 pollux kernel: usb 2-6: Manufacturer: TASCAM
Jan 29 08:05:53 pollux kernel: usb 2-6: SerialNumber: no serial number
Jan 29 08:05:53 pollux kernel: usb 2-6: configuration #1 chosen from 1
choice
Jan 29 08:06:08 pollux kernel: ALSA sound/usb/usx2y/usb_stream.c:457:
underrun, status=4294967278
Jan 29 08:06:08 pollux kernel: ALSA sound/usb/usx2y/usb_stream.c:457:
underrun, status=4294967278

[root@pollux Test]# cat /proc/asound/cards
0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xfebfc000 irq 21
1 [US122L         ]: USB US-122L - TASCAM US-122L
                      TASCAM US-122L (644:800e if 0 at 002/004)


and jack messages were

08:50:00.226 /usr/bin/jackd -R -P89 -dalsa -dusb_stream:1 -r48000 -p512
-n2
jackd 0.116.1
Copyright 2001-2005 Paul Davis and others.
jackd comes with ABSOLUTELY NO WARRANTY
This is free software, and you are welcome to redistribute it
under certain conditions; see the file COPYING for details
JACK compiled with System V SHM support.
08:50:00.251 JACK was started with PID=6417.
loading driver ..
apparent rate = 48000
creating alsa driver ... usb_stream:1|usb_stream:1|512|2|48000|0|0|
nomon|swmeter|-|32bit
ALSA lib control.c:909:(snd_ctl_open_noupdate) Invalid CTL usb_stream:1
control open "usb_stream:1" (No such file or directory)
configuring for 48000Hz, period = 512 frames (10.7 ms), buffer = 2
periods
ALSA: final selected sample format for capture: 24bit little-endian
ALSA: use 2 periods for capture
ALSA: final selected sample format for playback: 24bit little-endian
ALSA: use 2 periods for playback
08:50:02.397 Server configuration saved to "/home/Test/.jackdrc".
08:50:02.398 Statistics reset.
08:50:02.547 Client activated.
08:50:02.550 JACK connection change.
08:50:02.558 JACK connection graph change.

Tested by .mp3 file playback using audacious (with plugin jack).

Additional notes: the previous version of the patch is routinely used by
myself, at least some Fedora users using my packages at
http://pagesperso-orange.fr/La-page-Web-of-Phil/Tascam_US-122L/Telechargement_us122l.html , and under Debian and Ubuntu (Federico Briata web site at http://wiki.briata.org/doku.php?id=testing_us122l_under_linux ) under 2.6.26 and 2.6.27 kernel.

Hope it will be soon integrated to 2.6.29 devel.

Regards

Phil.


--=-VmmaepDIq/JbLd+TeS0C
Content-Disposition: attachment; filename="forwarded_message"
Content-Type: message/rfc822; name="forwarded_message"

From: Karsten Wiese <fzu@wemgehoertderstaat.de>
To: David Brownell <david-b@pacbell.net>
Subject: [RESEND][PATCH] USB: Prevent EHCI ITDs reusage while frame is
 active
Date: Mon, 26 Jan 2009 14:32:51 +0100
User-Agent: KMail/1.9.9
Cc: linux-usb@vger.kernel.org
References: <200802132238.51929.fzu@wemgehoertderstaat.de>
	 <200803171405.02530.fzu@wemgehoertderstaat.de>
	 <200805201315.08008.fzu@wemgehoertderstaat.de>
In-Reply-To: <200805201315.08008.fzu@wemgehoertderstaat.de>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Message-Id: <200901261432.51974.fzu@wemgehoertderstaat.de>
Content-Transfer-Encoding: 8bit

Hi,

this is a refresh to let patch fit ontop 2.6.29-rc2.
Changes from previous version:
- use variable clock_frame instead of hw_frame
- Patch Description exactified
snd_usb_us122l (in kernel since .28) needs it, if device is attached to
ehci.

thanks,
Karsten



----------------------------------------------------------------------
From: Karsten Wiese <fzu@wemgehoertderstaat.de>
Date: Wed, 13 Feb 2008 22:22:09 +0100
Subject: [PATCH] USB: Prevent EHCI ITDs reusage while frame is active

ITDs can be detached from urbs, before the frame elapses. Now those ITDs are
immediately recycled.
If the ITD is reused before the frame elapses, the ITD becomes invalid
regarding the not yet elapsed frame.
Patch takes care of those ITDs by moving them into a new ehci member list
cached_itd_list. ITDs resting in cached_itd_list are moved back into their
stream's free_list once scan_periodic() detects that the active frame has
elapsed.

Signed-off-by: Karsten Wiese <fzu@wemgehoertderstaat.de>

---
 drivers/usb/host/ehci-hcd.c   |    2 +
 drivers/usb/host/ehci-mem.c   |    1 +
 drivers/usb/host/ehci-sched.c |   54 ++++++++++++++++++++++++++++++++++------
 drivers/usb/host/ehci.h       |    5 ++++
 4 files changed, 54 insertions(+), 8 deletions(-)

diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 4725d15..e551bb3 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -485,6 +485,7 @@ static int ehci_init(struct usb_hcd *hcd)
 	 * periodic_size can shrink by USBCMD update if hcc_params allows.
 	 */
 	ehci->periodic_size = DEFAULT_I_TDPS;
+	INIT_LIST_HEAD(&ehci->cached_itd_list);
 	if ((retval = ehci_mem_init(ehci, GFP_KERNEL)) < 0)
 		return retval;
 
@@ -497,6 +498,7 @@ static int ehci_init(struct usb_hcd *hcd)
 
 	ehci->reclaim = NULL;
 	ehci->next_uframe = -1;
+	ehci->clock_frame = -1;
 
 	/*
 	 * dedicate a qh for the async ring head, since we couldn't unlink
diff --git a/drivers/usb/host/ehci-mem.c b/drivers/usb/host/ehci-mem.c
index 0431397..10d5291 100644
--- a/drivers/usb/host/ehci-mem.c
+++ b/drivers/usb/host/ehci-mem.c
@@ -128,6 +128,7 @@ static inline void qh_put (struct ehci_qh *qh)
 
 static void ehci_mem_cleanup (struct ehci_hcd *ehci)
 {
+	free_cached_itd_list(ehci);
 	if (ehci->async)
 		qh_put (ehci->async);
 	ehci->async = NULL;
diff --git a/drivers/usb/host/ehci-sched.c b/drivers/usb/host/ehci-sched.c
index a081ee6..c1f7d5f 100644
--- a/drivers/usb/host/ehci-sched.c
+++ b/drivers/usb/host/ehci-sched.c
@@ -1004,7 +1004,8 @@ iso_stream_put(struct ehci_hcd *ehci, struct ehci_iso_stream *stream)
 
 		is_in = (stream->bEndpointAddress & USB_DIR_IN) ? 0x10 : 0;
 		stream->bEndpointAddress &= 0x0f;
-		stream->ep->hcpriv = NULL;
+		if (stream->ep)
+			stream->ep->hcpriv = NULL;
 
 		if (stream->rescheduled) {
 			ehci_info (ehci, "ep%d%s-iso rescheduled "
@@ -1653,14 +1654,26 @@ itd_complete (
 			(stream->bEndpointAddress & USB_DIR_IN) ? "in" : "out");
 	}
 	iso_stream_put (ehci, stream);
-	/* OK to recycle this ITD now that its completion callback ran. */
+
 done:
 	usb_put_urb(urb);
 	itd->urb = NULL;
-	itd->stream = NULL;
-	list_move(&itd->itd_list, &stream->free_list);
-	iso_stream_put(ehci, stream);
-
+	if (ehci->clock_frame != itd->frame || itd->index[7] != -1) {
+		/* OK to recycle this ITD now. */
+		itd->stream = NULL;
+		list_move(&itd->itd_list, &stream->free_list);
+		iso_stream_put(ehci, stream);
+	} else {
+		/* HW might still start transactions based on this ITD.
+		   If its content changed that is. Move it to a safe place. */
+		list_move(&itd->itd_list, &ehci->cached_itd_list);
+		if (stream->refcount == 2) {
+			/* If iso_stream_put() would be called here, stream
+			   would be freed. Prevent stream's reusage instead. */
+			stream->ep->hcpriv = NULL;
+			stream->ep = NULL;
+		}
+	}
 	return retval;
 }
 
@@ -2101,6 +2114,20 @@ done:
 
 /*-------------------------------------------------------------------------*/
 
+static void free_cached_itd_list(struct ehci_hcd *ehci)
+{
+	struct ehci_itd *itd, *n;
+
+	list_for_each_entry_safe(itd, n, &ehci->cached_itd_list, itd_list) {
+		struct ehci_iso_stream	*stream = itd->stream;
+		itd->stream = NULL;
+		list_move(&itd->itd_list, &stream->free_list);
+		iso_stream_put(ehci, stream);
+	}
+}
+
+/*-------------------------------------------------------------------------*/
+
 static void
 scan_periodic (struct ehci_hcd *ehci)
 {
@@ -2115,10 +2142,17 @@ scan_periodic (struct ehci_hcd *ehci)
 	 * Touches as few pages as possible:  cache-friendly.
 	 */
 	now_uframe = ehci->next_uframe;
-	if (HC_IS_RUNNING (ehci_to_hcd(ehci)->state))
+	if (HC_IS_RUNNING(ehci_to_hcd(ehci)->state)) {
 		clock = ehci_readl(ehci, &ehci->regs->frame_index);
-	else
+		clock_frame = (clock >> 3) % ehci->periodic_size;
+	} else  {
 		clock = now_uframe + mod - 1;
+		clock_frame = -1;
+	}
+	if (ehci->clock_frame != clock_frame) {
+		free_cached_itd_list(ehci);
+		ehci->clock_frame = clock_frame;
+	}
 	clock %= mod;
 	clock_frame = clock >> 3;
 
@@ -2277,6 +2311,10 @@ restart:
 			/* rescan the rest of this frame, then ... */
 			clock = now;
 			clock_frame = clock >> 3;
+			if (ehci->clock_frame != clock_frame) {
+				free_cached_itd_list(ehci);
+				ehci->clock_frame = clock_frame;
+			}
 		} else {
 			now_uframe++;
 			now_uframe %= mod;
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index fb7054c..5262fb7 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -86,6 +86,9 @@ struct ehci_hcd {			/* one per controller */
 	union ehci_shadow	*pshadow;	/* mirror hw periodic table */
 	int			next_uframe;	/* scan periodic, start here */
 	unsigned		periodic_sched;	/* periodic activity count */
+	struct list_head	cached_itd_list; /* list of itds completed
+						    while frame hadn't yet elapsed */
+	unsigned		clock_frame;
 
 	/* per root hub port */
 	unsigned long		reset_done [EHCI_MAX_ROOT_PORTS];
@@ -220,6 +223,8 @@ timer_action (struct ehci_hcd *ehci, enum ehci_timer_action action)
 	}
 }
 
+static void free_cached_itd_list(struct ehci_hcd *ehci);
+
 /*-------------------------------------------------------------------------*/
 
 #include <linux/usb/ehci_def.h>
-- 
1.6.0.6


--=-VmmaepDIq/JbLd+TeS0C--

[-- Attachment #3: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

  reply	other threads:[~2009-01-29  8:36 UTC|newest]

Thread overview: 179+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-13 10:51 (no subject) Philippe CARRIERE
2008-10-13 14:28 ` Takashi Iwai
2008-10-14  9:54   ` Karsten Wiese
2008-10-14 10:41     ` Philippe Carriere
2008-10-14 11:29       ` Karsten Wiese
2009-01-27  0:16       ` Karsten Wiese
2009-01-29  8:35         ` Philippe Carriere [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-08-08  0:03 Giuliano Zannetti - ART S.p.A.
2019-06-13  5:54 Ralf Beck
2019-06-13 15:51 ` Pierre-Louis Bossart
2019-06-13 19:19 ` Jaroslav Kysela
2019-04-28  8:52 (No Subject) rodomar705
2018-01-24 12:00 (no subject) twischer
2017-07-19 15:25 [PATCH 000/102] Convert drivers to explicit reset API Philipp Zabel
2017-07-20 20:36 ` (no subject) Heiko Stuebner
2017-03-09 10:32 Felix Bruns
2017-01-13 10:46 [PATCH v3 4/8] x86: stop exporting msr-index.h to userland Nicolas Dichtel
2017-01-09 11:33 ` [PATCH v2 0/7] uapi: export all headers under uapi directories Arnd Bergmann
2017-01-13 10:46   ` [PATCH v3 0/8] " Nicolas Dichtel
2017-01-13 15:43     ` (no subject) David Howells
2016-09-20 18:12 xerofoify
2015-06-30 10:50 E.Richiardone
2014-11-14 16:40 Angelo Dureghello
2013-08-05  8:38 Chih-Chung Chang
     [not found] <s5hmx1526mg.wl%tiwai@suse.de>
2012-09-06  6:02 ` Markus Trippelsdorf
2012-09-06  6:33   ` (no subject) Daniel Mack
2012-09-06  6:48     ` Takashi Iwai
2011-09-08 10:20 A S
2011-09-08 11:03 ` Clemens Ladisch
2011-03-01 14:02 Javier Martin
2010-09-08  7:25 asim khan
2010-04-13 14:38 Sascha Hauer
2009-09-22 11:46 Delusion's Master
2009-08-11 21:02 Chaithrika U S
2009-08-11 11:36 ` chaithrika
2009-05-30  1:23 James Gardiner
2009-05-30  7:01 ` Takashi Iwai
2009-03-27  6:56 xrun on sdp340 with small buffers Jarkko Nikula
2009-03-27 13:32 ` (no subject) Jarkko Nikula
2009-03-27 16:31   ` Mark Brown
2008-11-24 13:09 Nitin Mahajan
2008-11-20 13:10 Nitin Mahajan
     [not found] <1226996302-10234-1-git-send-email-cooloney@kernel.org>
2008-11-18 11:45 ` Mark Brown
2008-11-17 23:24 Fernando Moro
2008-11-11  2:43 Yang, Libin
2008-11-11  8:17 ` Takashi Iwai
2008-10-14 12:16 Philippe CARRIERE
2008-04-03  8:47 郝舜
2008-04-03  8:56 ` Clemens Ladisch
     [not found] <EC2127EFF67248B9B1F7F34B45F74E55@Main>
     [not found] ` <B84B1606A0264FA18CBE236F84E6CE96@Main>
2008-02-21 10:51   ` Ответы для Linux Format Serge A. Suchkov
2008-02-21 12:13     ` (no subject) Serge A. Suchkov
2007-09-06  5:57 Krzysztof Helt
2007-09-06 13:14 ` Takashi Iwai
2007-03-09 12:28 Sutton O. Javelin
2007-03-09  6:48 Empty V. Crock
2007-03-08 16:58 Giggler S. Defeatist
2007-03-08  0:13 Arjuna H. Settlement
2007-03-07  8:58 Cutlasses M. Greek
2007-03-07  2:38 Flickering E. Sharps
2007-03-06 19:35 Rational K. Haggard
2007-03-06 15:57 Redeeming T. Angus
2007-02-28  0:11 Orient K. Underpinnings
2007-02-27  8:42 Depreciates F. Sum
2007-02-27  4:07 Whispers F. Charlie
2007-02-20  1:21 Dr.Friedrick Conway
2007-02-17 11:14 Dr.Hank Miles
2007-02-17  1:20 Dr.Aaron Barrera
2007-02-15 19:58 Nautilus S. Womb
2007-02-13 22:04 Dear Sir Madam
2007-02-01  6:55 COM CYCL
2007-01-30 19:51 Karsten Wiese
2007-01-31  9:22 ` Takashi Iwai
2007-01-23  1:12 Establishes S. Adoption
2007-01-21 15:47 Maisie T. Deathblow
2007-01-12  3:00 Barracuda K. Bobbi
2007-01-10 10:53 Acid P. Hank
2007-01-10  3:03 Timezone D. Authenticity
2007-01-06  4:15 Lintel E. Late
2007-01-05 20:41 Princeton F. Aligns
2007-01-05 10:44 Wot V. Armband
     [not found] <JAMB7R$1E04724C7A33DA4578A20ADF8AC469B0@libero.it>
2006-12-21 15:03 ` Clemens Ladisch
2006-12-16 14:17 tardo2002
2006-12-18  9:53 ` Clemens Ladisch
2006-12-04  7:01 miki
2006-11-26  3:25 Glenn K. Transporting
2006-11-24 22:41 Generality O. Lifeblood
2006-11-24 10:44 Proponent V. Stepbrother
2006-11-24  4:07 Scrounger D. Aboded
2006-11-24  1:17 Profanation R. Meandering
2006-11-23 18:13 Groins O. Animation
2006-11-22  1:27 Variance P. Whirled
2006-11-20  8:18 Tamil E. Turnoffs
2006-11-15 10:46 Doctor
2006-11-13 14:19 Doctor
2006-11-12 10:26 Rectums C. Palate
2006-11-12  6:26 Antonio Sampayo
2006-10-31 19:37 Isabel Decker
2006-10-30 10:40 Doctor
2006-10-30  2:45 Doctor
2006-10-28 22:25 Garbs H. Pecan
2006-10-28 19:35 ATA YAZILIM A.Þ.
2006-10-27 14:44 Skelhorn.RJC
2006-10-20 16:55 (Was Re: [Alsa-user] Poorly supported HDA intel) Ricardo Cerqueira
2006-10-20 17:16 ` Ricardo Cerqueira
2006-10-24 19:08   ` (no subject) Thierry Vignaud
2006-10-19  3:24 misato
2006-10-18  6:57 James Templeton
2006-10-09 23:13 albox
2006-10-07 12:41 yuki
2006-10-04  1:18 miyuki
2006-09-16 12:15 yukihana
2006-09-11  2:58 yukaridayo
2006-06-27  3:26 Paulo Cordeiro
2006-06-10  5:03 Rita Bruce
2006-05-05  1:37 OcHe
2006-05-06 23:25 ` Eric Shattow
2006-05-10 17:26 ` Clemens Ladisch
2006-03-19 13:05 汇嘉宏
2006-01-10 13:24 Daniel Mack
2006-01-10 17:07 ` Takashi Iwai
2006-01-10 19:12   ` Clemens Ladisch
2006-01-11 11:29     ` Daniel Mack
2005-12-07 10:44 Ramani Karuppiah
2005-09-21 18:35 Ryan Olejnik
2005-05-21  1:25 haf
2005-05-20 10:39 haf
2005-03-16 12:38 Eric
2005-03-16 13:22 ` Takashi Iwai
     [not found]   ` <1806.132.168.64.149.1110980407.squirrel@132.168.64.149>
2005-03-16 13:43     ` Takashi Iwai
     [not found]       ` <1908.132.168.64.149.1110981336.squirrel@132.168.64.149>
2005-03-16 13:59         ` Takashi Iwai
2004-12-28 11:42 Geoffrey Kendall
2004-12-28  8:31 Daniel L. Finch
2004-12-28  7:58 Sung S. Marshall
2004-12-25 23:11 Gil F. Phelps
2004-12-25  9:06 Juanita Britt
2004-12-23  8:33 Jake Link
2004-12-13 11:08 Steven
2004-12-13  0:46 Irma M. Harris
2004-12-04  7:02 Jamal Lambert
2004-12-03  7:12 Marsha Olson
2004-12-02 17:34 Vickie
2004-12-01  0:04 Mason Sinclair
2004-11-30 22:49 Lena M. Ochoa
2004-11-30 18:27 Janine Rowe
2004-11-30  5:35 Jill
2004-11-28 10:24 Tonia Castillo
2004-11-28  7:07 Sasha Peoples
2004-11-25 11:29 刘小姐
2004-11-06  2:30 Julie
2004-10-26 16:28 Katherine S. Burris
2004-10-25  1:00 Matt
2004-10-23 13:28 Ashley
2004-10-22 13:42 Desmond Murdock
2004-10-21  3:11 Tiffany Bloom
2004-10-20  8:26 Rui Nuno Capela
2004-10-20  8:56 ` Jaroslav Kysela
     [not found] <200410031405.i93YolTw000749@www3.gmail.com>
2004-10-14 19:23 ` Dane May
     [not found] <200410031464.i93YboTw008147@www6.gmail.com>
2004-10-14 19:23 ` Alyson Holley
2004-10-12 13:11 news globelife
2004-10-09 13:36 Adolph Tipton
2004-10-09  3:55 Robert Ritter
2004-10-08 20:11 Francesca B. Mendoza
2004-10-05 18:20 そふとうぇあ
2004-10-05  8:15 Genaro P. Tapia
2004-09-21 14:57 rte news
2004-09-19  7:02 Jill
2004-09-13 22:08 Inez
2004-09-06  1:16 Julie
2004-09-03  6:14 Ben
2004-07-05  5:45 Bo Henriksen
2003-11-11  0:07 Itay Ben-Yaacov
2003-10-16 20:02 Mark62756
2003-07-16  1:55 Eliot Blennerhassett
2003-07-16 11:40 ` Takashi Iwai
2003-06-26  0:40 Eliot Blennerhassett
2003-06-26  2:46 ` Fred Gleason
2003-04-24 15:21 Max Drechsler
2003-04-28 13:18 ` Takashi Iwai
2002-12-08 23:53 Henry Walpool
2002-08-02 14:48 Friedrich.Ewaldt
2002-07-20  6:57 double speed (ADAT), and hw params ordering Jaroslav Kysela
2002-07-20 19:20 ` (no subject) Fernando Pablo Lopez-Lezcano
2002-07-20 23:04   ` Abramo Bagnara
2002-07-05 16:51 Thorsten Haas
2002-04-01 12:10 optin_travel
2002-04-01  7:53 Patrick Shirkey
2002-03-31 22:22 optin_travel
2002-03-31 13:12 catsman
2002-04-01  4:17 ` Juan Linietsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1233218153.3257.25.camel@localhost.localdomain \
    --to=philippe-f.carriere@wanadoo.fr \
    --cc=alsa-devel@alsa-project.org \
    --cc=federicobriata@gmail.com \
    --cc=fzu@wemgehoertderstaat.de \
    --cc=tiwai@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).