Comment 13 for bug 555261

Revision history for this message
Chase Douglas (chasedouglas) wrote :

@lightrush:

Thanks for being so thorough! I will send the patch on to the kernel-team mailing list so it can be reviewed and hopefully inserted into the 10.04 image before release.

A new kernel went out today (2.6.32-20), and when you install it should upgrade your kernel to the released one. So, that's good if you didn't want a test kernel lying around, bad if you want the fix. I suggest that if this bug doesn't cause you too many issues then it's ok to upgrade. Otherwise you may want to wait until the next kernel is released, which would hopefully be sometime next week.

As for the fix itself, some code was added by Ubuntu developers to properly handle some Dell wifi switches. They did this by hooking into the Linux input event system which handles mouse, keyboard, switches, lid switch, and other miscellaneous input doodads. The problem is that the input event system hook runs in what's called interrupt context. If you're in irq context, you absolutely cannot ever stop to wait for something else. The reasons are complicated, but essentially you may be sitting on top of another process that you need to wait for. Unfortunately, the function to handle the wifi hardware does just that. The fix is simple though: listen for events in irq context, and then defer the actual handling of the event to a task that runs later in user context.

If you are interested in this sort of thing, you can follow along as I send the patch for review on the kernel-team mailing list: https://lists.ubuntu.com/mailman/listinfo/kernel-team. You can subscribe or just watch the archives for new messages.

Thanks again for testing!