Bug 15580 - ehci_hcd has to be reloaded after disconnect/connect cycle of USB audio card
Summary: ehci_hcd has to be reloaded after disconnect/connect cycle of USB audio card
Status: RESOLVED PATCH_ALREADY_AVAILABLE
Alias: None
Product: Drivers
Classification: Unclassified
Component: USB (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Greg Kroah-Hartman
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-19 11:40 UTC by Pedro Ribeiro
Modified: 2011-08-10 10:15 UTC (History)
4 users (show)

See Also:
Kernel Version: 2.6.31 to 2.6.33
Subsystem:
Regression: No
Bisected commit-id:


Attachments
lsusb -vvv (40.57 KB, text/plain)
2010-03-19 11:40 UTC, Pedro Ribeiro
Details
lspci -vvv (25.59 KB, text/plain)
2010-03-19 11:41 UTC, Pedro Ribeiro
Details
usbmon logs - see comment (56 bytes, text/plain)
2010-03-23 12:34 UTC, Pedro Ribeiro
Details
dmesg with CONFIG_USB_DEBUG (78.17 KB, text/plain)
2010-03-23 23:47 UTC, Pedro Ribeiro
Details
The patch by Daniel Mack that solves the problem (4.59 KB, patch)
2011-03-19 04:05 UTC, Pedro Ribeiro
Details | Diff
Patch to add usb_get_gfp() including the fix for caiaq (2.33 KB, patch)
2011-05-23 16:09 UTC, Takashi Iwai
Details | Diff
Picture with the stack trace when caiaq module is loaded with Takashi's patch (438.29 KB, image/jpeg)
2011-05-26 22:50 UTC, Pedro Ribeiro
Details

Description Pedro Ribeiro 2010-03-19 11:40:05 UTC
Created attachment 25609 [details]
lsusb -vvv

Hi,

I have a WinTV NOVA-T DVB-T USB2 adapter (dvb_usb_dib0700) and a Native
Instruments Audio4DJ USB sound card (snd-usb-caiaq).

Both devices work wonderfully when I come from a fresh boot (I can
watch tv with the audio routed through the sound card). However, once
I disconnected the audio card and reconnect again, I get this regular
but not periodic interference on the audio card.
By "regular and not periodic" I mean that the time elapsed between
each interference is random, from 0.5 to 30 seconds, but it keeps
happening. The interference is a kind of crack and pop which affects
all output channels of the audio card.

From now on (until I fresh boot again), I can reconnect the audio card
as many times as I want, rmmod and modprobe its module again and I
always get the interference. Note that unplugging and plugging the DVB
adapter makes no difference, and if I fresh boot, connect both
devices, disconnect the DVB card and reconnect, I do not get
interference - only when I do the same with the audio card.

After much research I found the culprit - apparently if I rmmod and
modprobe the ehci_usb device the interference is gone without having
to fresh boot (of course before this I unload the modules for the dvb
and audio devices).

I was to able to reproduce this problem in kernels 2.6.31 to 2.6.33 (I
haven't tried any others). I WAS NOT able to reproduce on a ICH4
laptop I have.

In conclusion:

Procedure 1:
- fresh boot
- connect both devices
- everything works OK

Procedure 2:
- (same as Procedure 1)
- disconnect audio card and reconnect
- interference starts until I reload all relevant modules and ehci_hcd

Procedure 3:
- (same as Procedure 1)
- disconnect DVB-T card and reconnect
- everything works OK

My laptop is a Lenovo T400.

Attached are the lsusb and lspci -vvv. Please let me know if you need
any more information.
Comment 1 Pedro Ribeiro 2010-03-19 11:41:04 UTC
Created attachment 25610 [details]
lspci -vvv
Comment 2 Andrew Morton 2010-03-22 23:02:18 UTC
(switched to email.  Please respond via emailed reply-to-all, not via the
bugzilla web interface).

On Fri, 19 Mar 2010 11:40:10 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:

> http://bugzilla.kernel.org/show_bug.cgi?id=15580
> 
>            Summary: ehci_hcd has to be reloaded after disconnect/connect
>                     cycle of USB audio card
>            Product: Drivers
>            Version: 2.5
>     Kernel Version: 2.6.31 to 2.6.33
>           Platform: All
>         OS/Version: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: USB
>         AssignedTo: greg@kroah.com
>         ReportedBy: eusou15@yahoo.com
>         Regression: No
> 
> 
> Created an attachment (id=25609)
>  --> (http://bugzilla.kernel.org/attachment.cgi?id=25609)
> lsusb -vvv
> 
> Hi,
> 
> I have a WinTV NOVA-T DVB-T USB2 adapter (dvb_usb_dib0700) and a Native
> Instruments Audio4DJ USB sound card (snd-usb-caiaq).
> 
> Both devices work wonderfully when I come from a fresh boot (I can
> watch tv with the audio routed through the sound card). However, once
> I disconnected the audio card and reconnect again, I get this regular
> but not periodic interference on the audio card.
> By "regular and not periodic" I mean that the time elapsed between
> each interference is random, from 0.5 to 30 seconds, but it keeps
> happening. The interference is a kind of crack and pop which affects
> all output channels of the audio card.
> 
> >From now on (until I fresh boot again), I can reconnect the audio card
> as many times as I want, rmmod and modprobe its module again and I
> always get the interference. Note that unplugging and plugging the DVB
> adapter makes no difference, and if I fresh boot, connect both
> devices, disconnect the DVB card and reconnect, I do not get
> interference - only when I do the same with the audio card.
> 
> After much research I found the culprit - apparently if I rmmod and
> modprobe the ehci_usb device the interference is gone without having
> to fresh boot (of course before this I unload the modules for the dvb
> and audio devices).
> 
> I was to able to reproduce this problem in kernels 2.6.31 to 2.6.33 (I
> haven't tried any others). I WAS NOT able to reproduce on a ICH4
> laptop I have.
> 
> In conclusion:
> 
> Procedure 1:
> - fresh boot
> - connect both devices
> - everything works OK
> 
> Procedure 2:
> - (same as Procedure 1)
> - disconnect audio card and reconnect
> - interference starts until I reload all relevant modules and ehci_hcd
> 
> Procedure 3:
> - (same as Procedure 1)
> - disconnect DVB-T card and reconnect
> - everything works OK
> 
> My laptop is a Lenovo T400.
> 
> Attached are the lsusb and lspci -vvv. Please let me know if you need
> any more information.
>
Comment 3 Pedro Ribeiro 2010-03-23 12:34:17 UTC
Created attachment 25655 [details]
usbmon logs - see comment

This shows one usbmon log for normal operation (normal), other with interference (interference) and possibly a more useful one which shows how the interference starts in the audio card after I connect the DVB adapter (interference2).
All of them are taken on the audio card bus.

Sorry for the size of the logs, but I had to capture more than one event and they are pretty sparse (10 to 20 seconds between them).
Comment 4 Anonymous Emailer 2010-03-23 12:40:00 UTC
Reply-To: pedrib@gmail.com

This is messing with my mind. I've been desperately trying to find a
pattern here. Now it appears the interference only happens if I unplug
and replug the DVB-T adapter.

Anyway, I have created an attachment to the original bug report with
usbmon logs from the audio card.
One of them shows normal operation, the other shows the interference
I'm talking about.
A third one (called interference2) is probably more useful - it shows
how the interference starts when I disconnect and reconnect the DVB
adapter.

To reply to Alan's question, sometimes when I unload and reload the
module the interference starts, sometimes it doesn't. Like I said,
seems completely random!

http://bugzilla.kernel.org/show_bug.cgi?id=15580
Comment 5 Alan Stern 2010-03-23 13:35:16 UTC
On Thu, 18 Mar 2010, Pedro Ribeiro wrote:

> After much research I found the culprit - apparently if I rmmod and
> modprobe the ehci_usb device the interference is gone without having
> to fresh boot (of course before this I unload the modules for the dvb
> and audio devices).
>
> I was to able to reproduce this problem in kernels 2.6.31 to 2.6.33 (I
> haven't tried any others). I WAS NOT able to reproduce on a ICH4
> laptop I have.
>
> The DVB-T adapter uses the dvb_usb_dib0700 module and the audio card
> uses the snd-usb-caiaq module.

It's hard to say what could be causing the problem here.  The best
approach I can think of is to collect a pair of usbmon traces: one
while the problem occurs and one while everything works correctly.  
(See the kernel source file Documentation/usb/usbmon.txt for
instructions.)  Attach the two traces to the bug report.  They don't 
have to be very long; just enough to cover some occurrences of the 
sound interference.

Also, you should attach a dmesg log (with CONFIG_USB_DEBUG enabled)  
showing what happens when you unload and reload ehci-hcd, and what
happens when you unplug and replug the audio card.

Does the same problem occur if you unload and reload the audio driver 
instead of unplugging and replugging the audio card?

Alan Stern
Comment 6 Alan Stern 2010-03-23 19:33:33 UTC
On Tue, 23 Mar 2010, Pedro Ribeiro wrote:

> This is messing with my mind. I've been desperately trying to find a
> pattern here. Now it appears the interference only happens if I unplug
> and replug the DVB-T adapter.
> 
> Anyway, I have created an attachment to the original bug report with
> usbmon logs from the audio card.
> One of them shows normal operation, the other shows the interference
> I'm talking about.
> A third one (called interference2) is probably more useful - it shows
> how the interference starts when I disconnect and reconnect the DVB
> adapter.

I didn't see anything especially unusual in the usbmon traces, except
that a little under half of the packets have length 0.  But that was
true in the normal trace as well.

(One little bug in the sound card did show up, but it isn't related to 
your problem.  The string-0 descriptor is invalid -- it contains an 
extra byte.)

Unfortunately the data sets are too large to examine very closely.

> To reply to Alan's question, sometimes when I unload and reload the
> module the interference starts, sometimes it doesn't. Like I said,
> seems completely random!

That's different from what you said originally -- you said that the
interference would start only when you unplugged and replugged the
audio card (and now when you unplug and replug the DVB-T adapter).  
But unloading and reloading the driver is a software event, not a
hardware event, so the fact that it also can cause the interference to
start may be significant.  Although I don't know just what it means...

Is it still true that if you don't unplug either card or unload the 
drivers then the interference never starts?

Were you able to collect the dmesg log with CONFIG_USB_DEBUG enabled?

Alan Stern
Comment 7 Anonymous Emailer 2010-03-23 23:46:37 UTC
Reply-To: pedrib@gmail.com

On 23 March 2010 19:32, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 23 Mar 2010, Pedro Ribeiro wrote:
>
>> This is messing with my mind. I've been desperately trying to find a
>> pattern here. Now it appears the interference only happens if I unplug
>> and replug the DVB-T adapter.
>>
>> Anyway, I have created an attachment to the original bug report with
>> usbmon logs from the audio card.
>> One of them shows normal operation, the other shows the interference
>> I'm talking about.
>> A third one (called interference2) is probably more useful - it shows
>> how the interference starts when I disconnect and reconnect the DVB
>> adapter.
>
> I didn't see anything especially unusual in the usbmon traces, except
> that a little under half of the packets have length 0.  But that was
> true in the normal trace as well.
>
> (One little bug in the sound card did show up, but it isn't related to
> your problem.  The string-0 descriptor is invalid -- it contains an
> extra byte.)
>
> Unfortunately the data sets are too large to examine very closely.
>
>> To reply to Alan's question, sometimes when I unload and reload the
>> module the interference starts, sometimes it doesn't. Like I said,
>> seems completely random!
>
> That's different from what you said originally -- you said that the
> interference would start only when you unplugged and replugged the
> audio card (and now when you unplug and replug the DVB-T adapter).
> But unloading and reloading the driver is a software event, not a
> hardware event, so the fact that it also can cause the interference to
> start may be significant.  Although I don't know just what it means...
>
> Is it still true that if you don't unplug either card or unload the
> drivers then the interference never starts?
>
> Were you able to collect the dmesg log with CONFIG_USB_DEBUG enabled?
>
> Alan Stern
>
>

I have some really interesting developments. I think I narrowed it down.

So I ALWAYS get the interference when I:
- load the snd-usb-caiaq module
- load the dvb_usb_dib0700 module

In this order. If its in the opposite order, nothing happens.

So now I'm 100% sure this happens when loading and unloading modules,
which like you said means its something in software, much to my relief
(means its solvable). But now I have no idea where to look. usbmon
logs show nothing and I'm attaching dmesg - but I don't think there is
any interesting information there.

One thing I forgot to say is probably very important is that the audio
card only produces the interference when it is being used. So this
means that when it is sitting idle (no usbmon output) there is no
interference. However, as soon as I start using it (open it with ALSA,
or starting a JACK audio server) the cracks and pops start. When I
stop the application using it, the cracks and pops stop - and the
usbmon output too.

I've tried capturing a usbmon log on the DVB adapter part, but no
output is produced when the interference starts. Note that I do not
need to be using the DVB adapter (streaming from it) in order for the
interference to appear. But as soon as I unload the dvb_usb_dib0700
module, it stops the cracks and pops in the audio.
Comment 8 Pedro Ribeiro 2010-03-23 23:47:53 UTC
Created attachment 25665 [details]
dmesg with CONFIG_USB_DEBUG
Comment 9 Anonymous Emailer 2010-03-24 00:05:34 UTC
Reply-To: pedrib@gmail.com

Just to clear things up (hopefully) the behaviour described above is
only for the first time, when I boot the system. Once I load the
modules in the order specified above, I always get the interference
even if I unload them all and reload them NOT in that order - what I
mean is once the damage is done, its irreversible - I can't use both
at the same time.

I'm really sorry for the mess that this bug report is - not only it is
driving me nuts, but also really hard to pin down in which
circumstances things happen.
Comment 10 Alan Stern 2010-03-24 15:38:29 UTC
On Tue, 23 Mar 2010, Pedro Ribeiro wrote:

> Just to clear things up (hopefully) the behaviour described above is
> only for the first time, when I boot the system. Once I load the
> modules in the order specified above, I always get the interference
> even if I unload them all and reload them NOT in that order - what I
> mean is once the damage is done, its irreversible - I can't use both
> at the same time.

This is very puzzling, and I don't see any reason for the behavior
you're describing.  The only thing I can think of is that somehow the
audio card gets into a bad state which persists until it is reset.

You can test this by using the attached usbreset program.  Start by 
triggering the interference, and then stop using both cards (don't 
stream any TV and don't stream any audio).  In fact, to be safe, you 
should unload both drivers.

While the cards are idle, use the program to reset the audio card
(you'll have to run it as root).  You just tell it the name of the USB
device to reset.  For example, according to your dmesg log the audio
card was device 3 on bus 1, so you would do:

	sudo ./usbreset /dev/bus/usb/001/003

Then reload the audio driver, try streaming some normal ALSA audio,
and see if the interference has gone away.

Alan Stern
Comment 11 Anonymous Emailer 2010-03-25 01:14:25 UTC
Reply-To: pedrib@gmail.com

Actually after some quick testing, I can see it does not work :(

The only solution till now is still to unload and reload ehci_hcd. I
don't even need to reload the drivers for this!

Pedro
Comment 12 Anonymous Emailer 2010-03-25 01:31:20 UTC
Reply-To: pedrib@gmail.com

>
> This is very puzzling, and I don't see any reason for the behavior
> you're describing.  The only thing I can think of is that somehow the
> audio card gets into a bad state which persists until it is reset.
>
> You can test this by using the attached usbreset program.  Start by
> triggering the interference, and then stop using both cards (don't
> stream any TV and don't stream any audio).  In fact, to be safe, you
> should unload both drivers.
>
> While the cards are idle, use the program to reset the audio card
> (you'll have to run it as root).  You just tell it the name of the USB
> device to reset.  For example, according to your dmesg log the audio
> card was device 3 on bus 1, so you would do:
>
>        sudo ./usbreset /dev/bus/usb/001/003
>
> Then reload the audio driver, try streaming some normal ALSA audio,
> and see if the interference has gone away.
>
> Alan Stern
>

This usbreset seems to work, even without reloading the audio driver.
I have to do some further testing (read - day to day use coupled with
stress testing) to be 100% sure. Unfortunately I'm going away for a
couple of weeks now and I can't take my devices with me.

I'll get back to you ASAP after further testing.

Your help is much appreciated, and I thank you very much.

Pedro
Comment 13 Pedro Ribeiro 2010-03-25 01:43:21 UTC
Please take notice that the two comments above are swapped (something is wrong with my mail system).

The usbreset DOES NOT work and the only way to is to reload ehci_hcd and uhci_hcd.
Comment 14 Anonymous Emailer 2010-04-06 00:47:43 UTC
Reply-To: pedrib@gmail.com

On 24 March 2010 15:37, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 23 Mar 2010, Pedro Ribeiro wrote:
>
>> Just to clear things up (hopefully) the behaviour described above is
>> only for the first time, when I boot the system. Once I load the
>> modules in the order specified above, I always get the interference
>> even if I unload them all and reload them NOT in that order - what I
>> mean is once the damage is done, its irreversible - I can't use both
>> at the same time.
>
> This is very puzzling, and I don't see any reason for the behavior
> you're describing.  The only thing I can think of is that somehow the
> audio card gets into a bad state which persists until it is reset.
>
> You can test this by using the attached usbreset program.  Start by
> triggering the interference, and then stop using both cards (don't
> stream any TV and don't stream any audio).  In fact, to be safe, you
> should unload both drivers.
>
> While the cards are idle, use the program to reset the audio card
> (you'll have to run it as root).  You just tell it the name of the USB
> device to reset.  For example, according to your dmesg log the audio
> card was device 3 on bus 1, so you would do:
>
>        sudo ./usbreset /dev/bus/usb/001/003
>
> Then reload the audio driver, try streaming some normal ALSA audio,
> and see if the interference has gone away.
>
> Alan Stern
>

Hi Alan,

It is with great pleasure to announce that I have made some progress.

One thing I'm 100% sure now is that this bug ONLY occurs with 64 bit
kernel and userland. With a i686 kernel/userland, there is no
interference. This is always reproducible.

I downloaded Ubuntu 10.04 Beta 1 live CD's for i386 and amd64 and
decided to try them out. With the amd64 one I get the interference,
with the i386 I do not!

I tested with another platform (a friend's laptop) and I can reproduce
the results: with amd64 I get the interference, with i386 nothing. His
chipset is also ICH9. Unfortunately I don't have any other platform
where I can test it. Please let me know if you need the lspci and
lsusb for his platform.

So does this ring a bell? I had no idea there was a difference in USB
handling in the kernel between 32 and 64 bit!

Regards,
Pedro

http://bugzilla.kernel.org/show_bug.cgi?id=15580
Comment 15 Alan Stern 2010-04-06 14:45:57 UTC
On Tue, 6 Apr 2010, Pedro Ribeiro wrote:

> So does this ring a bell? I had no idea there was a difference in USB
> handling in the kernel between 32 and 64 bit!

As far as I know, there is no difference.  Certainly there's not 
_supposed_ to be any difference!

What happens if you run a 64-bit kernel with a 32-bit userspace?

Alan Stern
Comment 16 Anonymous Emailer 2010-04-06 22:06:01 UTC
Reply-To: pedrib@gmail.com

On 6 April 2010 15:45, Alan Stern <stern@rowland.harvard.edu> wrote:
> On Tue, 6 Apr 2010, Pedro Ribeiro wrote:
>
>> So does this ring a bell? I had no idea there was a difference in USB
>> handling in the kernel between 32 and 64 bit!
>
> As far as I know, there is no difference.  Certainly there's not
> _supposed_ to be any difference!
>
> What happens if you run a 64-bit kernel with a 32-bit userspace?
>
> Alan Stern
>
>

Unfortunately I don't have a spare hard disk or disk space so I can't
install a 64 bit kernel with 32 bit apps - do you know of any liveCD
which has this configuration?

I made some progress today. I talked to the developer of the DVB-T
card driver and he made me discover that this also happens with a USB
pendrive when it gets mounted or unmounted. So this is probably a
snd-usb-caiaq bug.
But to make matters worse, now I'm not even sure if unloading ehci_hcd
solves the problem - I had to reboot yesterday because I could not
make the interference go away with this method.

As you can see from the messages above in this thread this is becoming
very confusing. So I'm going to summarize where we stand.

So where is what I know FOR SURE:

- this happens on two different ICH9 platforms, not only on my laptop
- only with 64 bit kernel / userland
- not reproducible on 32 bit kernel / userland
- the interference can be caused by both the DVB card when it is
operating or a pendrive when it gets mounted or unmounted (but not
when reading or writing to the partition in the pendrive)
- upon fresh boot, there is no interference. I unplug and replug the
audio card and the interference starts


And where is what I SUSPECT BUT I'M NOT SURE:
- unloading and reloading the snd-usb-caiaq module triggers the
interference without unplugging and replugging
- unloading and reloading ehci_hcd solves the issue till the next
unplug and replug of the audio card

Any of the assumptions in previous posts can and should be ignored.
Once again, sorry for the mess, but you can see how hard and long this
is taking to debug.

Regards,
Pedro
Comment 17 Anonymous Emailer 2010-04-07 11:41:46 UTC
Reply-To: pedrib@gmail.com

On 6 April 2010 23:05, Pedro Ribeiro <pedrib@gmail.com> wrote:
> On 6 April 2010 15:45, Alan Stern <stern@rowland.harvard.edu> wrote:
>> On Tue, 6 Apr 2010, Pedro Ribeiro wrote:
>>
>>> So does this ring a bell? I had no idea there was a difference in USB
>>> handling in the kernel between 32 and 64 bit!
>>
>> As far as I know, there is no difference.  Certainly there's not
>> _supposed_ to be any difference!
>>
>> What happens if you run a 64-bit kernel with a 32-bit userspace?
>>
>> Alan Stern
>>
>>
>
> Unfortunately I don't have a spare hard disk or disk space so I can't
> install a 64 bit kernel with 32 bit apps - do you know of any liveCD
> which has this configuration?
>
> I made some progress today. I talked to the developer of the DVB-T
> card driver and he made me discover that this also happens with a USB
> pendrive when it gets mounted or unmounted. So this is probably a
> snd-usb-caiaq bug.
> But to make matters worse, now I'm not even sure if unloading ehci_hcd
> solves the problem - I had to reboot yesterday because I could not
> make the interference go away with this method.
>
> As you can see from the messages above in this thread this is becoming
> very confusing. So I'm going to summarize where we stand.
>
> So where is what I know FOR SURE:
>
> - this happens on two different ICH9 platforms, not only on my laptop
> - only with 64 bit kernel / userland
> - not reproducible on 32 bit kernel / userland
> - the interference can be caused by both the DVB card when it is
> operating or a pendrive when it gets mounted or unmounted (but not
> when reading or writing to the partition in the pendrive)
> - upon fresh boot, there is no interference. I unplug and replug the
> audio card and the interference starts
>
>
> And where is what I SUSPECT BUT I'M NOT SURE:
> - unloading and reloading the snd-usb-caiaq module triggers the
> interference without unplugging and replugging
> - unloading and reloading ehci_hcd solves the issue till the next
> unplug and replug of the audio card
>
> Any of the assumptions in previous posts can and should be ignored.
> Once again, sorry for the mess, but you can see how hard and long this
> is taking to debug.
>
> Regards,
> Pedro
>

Good news: I've talked to the snd-usb-caiaq developer and he gave me a
patch which appears to solve the problem. I'm going to test it for a
couple of days just to make sure before I OK him.

Pedro
Comment 18 Florian Mickler 2011-02-02 09:33:47 UTC
I'm guessing that was the following commit which was merged for v2.6.34-rc7:

commit 073900a28d95c75a706bf40ebf092ea048c7b236
Author: Daniel Mack <daniel@caiaq.de>
Date:   Mon Apr 12 13:17:25 2010 +0200

    USB: rename usb_buffer_alloc() and usb_buffer_free()
Comment 19 Pedro Ribeiro 2011-03-18 19:35:33 UTC
Hi,

all that commit did was to rename the functions. 

I've just verified that with 2.6.38 the bug is still present. Therefore I am re-opening the bug.

Thanks for your patience.

Pedro
Comment 20 Florian Mickler 2011-03-18 21:11:57 UTC
That indeed seems fishy :| ... I really don't know how I came up with that commit... sorry. Maybe I found a commit but fat-fingered the copy-n-paste... But then again, it wouldn't still be present in 2.6.38... 

Thanks for testing with 2.6.38!
Comment 21 Florian Mickler 2011-03-18 21:13:16 UTC
Can you post the patch you mentioned in comment #17 ?
Comment 22 Pedro Ribeiro 2011-03-19 04:04:33 UTC
Hi Florian,

sure, I'm attaching the patch. It has to be applied with -l.

Regards,
Pedro
Comment 23 Pedro Ribeiro 2011-03-19 04:05:23 UTC
Created attachment 51202 [details]
The patch by Daniel Mack that solves the problem

Apply this patch with -l
Comment 24 Florian Mickler 2011-03-30 22:37:13 UTC
Who takes care of merging that patch? Has Daniel submitted that patch somewhere?
Comment 25 Pedro Ribeiro 2011-05-19 14:01:40 UTC
Hi Florian,

I'm very sorry for the late reply, I will answer more promptly onwards

This problem is still present in 2.6.38.3. Nobody has taken care of the patch and Daniel hasn't submitted because there was resistance by the USB maintainers to submit the patch. You can follow the discussion here: http://lkml.org/lkml/2010/4/7/87

I understand their resistance to including the patch since I'm the only person that has reported it. However, you should take into consideration that this is a real problem and I've tested with another laptop which showed the same behaviour.

One thing to take into consideration is that probably not many people use Linux with this sound card so the problem doesn't get reported. Once again, I can say that the patch solves this problem 100%.

Regards,
Pedro
Comment 26 Takashi Iwai 2011-05-23 16:08:27 UTC
Well, it just stuck at the point to implement kmalloc-variant of usb buffer allocation API.  The rename of usb_alloc_buffer() / usb_free_buffer() was already done.

Or maybe an easier option would be to implement an API giving the gfp flag for the corresponding controller to pass to kmalloc, like the patch below.  Pedro could you check whether it works?
Comment 27 Takashi Iwai 2011-05-23 16:09:27 UTC
Created attachment 59102 [details]
Patch to add usb_get_gfp() including the fix for caiaq
Comment 28 Pedro Ribeiro 2011-05-26 22:49:34 UTC
Hi Takashi,

thanks for your efforts. I built and installed 2.6.38.6 with your patch. 

However, when the module is loaded upon connecting the device I get a fatal error. I've captured the stack trace using KDB (sorry for the bad photo quality) and I'm attaching it to this thread.

Regards,
Pedro
Comment 29 Pedro Ribeiro 2011-05-26 22:50:46 UTC
Created attachment 59632 [details]
Picture with the stack trace when caiaq module is loaded with Takashi's patch
Comment 30 Daniel Mack 2011-07-04 18:00:00 UTC
Takashi, do you plan to continue working on this or do you want me to have a look? It seems like kmalloc with usb_get_gfp() returns a different type of memory than usb_alloc_coherent() does, but taking a quick look, I can't tell why.

I'd like to get this issue solved, as there are more people reporting this issue, and they all say that manually applying the patch from http://lkml.org/lkml/2010/5/7/61 fixes their trouble.


Thanks,
Daniel
Comment 31 Florian Mickler 2011-08-10 10:15:01 UTC
Patch: https://lkml.org/lkml/2011/8/10/52

Note You need to log in before you can comment on or make changes to this bug.