Why do tuner card drivers fail to build after kernel update to 4.4.0-143-generic?

What changed is the mm.h file's get_user_pages() interface. This change to the base kernel code (in Jan) has finally worked its way down to the 4.4.0-143 Ubuntu kernel release. It caused all sorts of grief to Nvidia drivers and some vm drivers, but they got rewritten. Other drivers, like yours or the Intel Compute Stick's HDMI audio driver in oem-hdmi-audio-dkms_0.1_all.deb may or may not get a rewrite. Basically you have three choices:

  1. Stay with the 4.4.0-142 kernel. Forgo all future kernel patches -- the 4.4 series is dead to you until your driver is rewritten. Contact the card vendor about this, they may have a new driver.
  2. Rewrite the driver yourself. It may not be too bad, looks like this interface has seen changes in the past, and the current ones are just undoing some things. Don't attempt unless you have some kernel code experience. Maybe hire a third party developer to fix the driver, if security and using that card are critical to you.
  3. Spend your time looking for a later kernel with driver support. The HDMI audio has been fixed in later kernels, like the 4.18, so maybe you can upgrade OS/kernel. Again, check with the vendor of the card, they may be aware of which later kernels have a working driver (if any) included.

Some machines were crashing, somewhere, so somebody thought changing a LTS kernel interface was acceptable. I personally think they were wrong, but who am I to say. This alteration was upstream of Canonical, so it's considered a feature, not a bug, and unlikely to be changed because some old drivers don't work anymore.


For anyone else that is trying to chase down this specific problem, a user that goes by the handle CrazyCat has provided patches/updates to the TBS drivers that fix this issue. There is also a discussion of this issue in the TBS Driver & Software Update forum.