Skip to content

ehci-hcd.c automatic patch + rebuild, working around kernel bugs affecting the Audiolab MDAC

Notifications You must be signed in to change notification settings

comps/ehci-mdac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 

Repository files navigation

DISCLAIMER: I don't use Ubuntu, this is just for the poor people that do


The Audiolab MDAC (an audio device) has some problems with recent Linux kernel
versions due to split transaction scheduling in the ehci-hcd driver.

I'm going to investigate it further and push for a proper fix,
but in the meantime, there's this workaround.

It basically just patches ehci-sched.c with a reverting patch and rebuilds
the kernel image, since Ubuntu compiles ehci-hcd with the kernel,
NOT as a standalone module.

The offending commits are
e3420901eba65b1c46bed86d360e3a8685d20734 and
811c926c538f7e8d3c08b630dd5844efd7e000f6

This tool was created for "ordinary folk", and therefore, for Ubuntu.
If you're a skilled kernel programmer who maintains his own kernel,
then by all means revert the aforementioned commits and forget about
this simple Makefile "tool".


== How to use ==

=== Preparation ===

1) download a tarball/zip from Github's Tags page,
   https://github.com/comps/ehci-mdac/tags

2) extract it and "cd" into the directory

All temporary files will reside in this directory, so you can easily remove it
once all is done.

3) make sure to have "make" installed,
   $ sudo apt-get install make

4) make sure to have at least 11GB of free disk space and several spare hours
   of computer time (ie. not running on battery)
   - the kernel+modules rebuild takes about 10GB of temporary files, which
     can be removed afterwards, see cleanup below
   - on dualcore Intel i5 CPU it took about 2 hours

=== Execution ===

If you don't mind the script building the modules with root privileges,
then by all means run "sudo make debpkg install". This is the recommended way
for most people.

As an alternative (or for debugging purposes), you can run each step manually:

1) download, and upstream-patch the kernel source
   $ make source

2) install build dependencies (with minimal other deps),
   $ sudo make builddep

3) patch the ehci-sched.c source,
   $ make patch

4) build the kernel, including modules, create .deb packages,
   $ make build

5) install the new .deb packages with kernel image and headers,
   $ sudo make install

6) (optional) hold the linux-image package, so the newly installed kernel
   doesn't get replaced by a stock updated one - this is potentially a bad
   idea as the updates might contain important changes
     a) if you prefer less future hassle, do this step,
     b) if you really want the future kernel fixes/features, skip this step,
        you can simply re-run this entire tool when the kernel gets updated
        in the future

   (untested, not dangerous, but might just not work)
   $ dpkg --get-selections | grep linux-image | awk '{print $1}' | xargs apt-mark hold


=== Cleanup ===

And that's about it!
Feel free to remove the unzipped directory and the downloaded zip/tarball.

About

ehci-hcd.c automatic patch + rebuild, working around kernel bugs affecting the Audiolab MDAC

Resources

Stars

Watchers

Forks

Packages

No packages published