Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> I suppose RHEL uses basically the same kernel, with patches that don't alter its interface too substantially. So I presume that a driver in source form, or even partly in binary blob form, should build and work approximately equally well with any stock kernel.

No, I think that's exactly the difference; Linux (in)famously has no stable ABI for drivers, and regularly makes changes that break things if you don't recompile against the updated kernel. Part of the value in RHEL was that they froze significantly more ABI surface, which made it possible to write proprietary drivers that would work across at least minor kernel updates without needing to be changed. That won't work on an upstream kernel because upstream doesn't go out of their way to freeze that ABI surface.



Yes, exactly this.

Maintaining any kernel modules that are not in the Linux kernel tree is extremely painful.

Almost every new kernel version breaks the older kernel modules, e.g. device drivers, by moving definitions between kernel headers, by adding or deleting function parameters, or by adding or deleting structure members.

Most of these changes are very poorly documented, so anyone who does not follow daily the kernel development is clueless for instance about which values should be put in the new function parameters or new structure members in order to obtain the same behavior as in the previous kernel version.

The kernel developers who make these breaking changes do not bother to write upgrading instructions for the benefit of those who must maintain an out-of-tree device driver, so those may have to waste a lot of time with reading the kernel sources, to discover what must be done to make the old device drivers compatible with a new kernel.


The kernel devs argue that the goal should be to get in-tree so these changes are taken care of for you by the people driving the ABI changes, and I happen to agree with them in that regard.


Being admitted to the tree is not treevial, so to say, and may take years for more complex stuff.


Nearly every Android device ever made runs on an outdated kernel that can't be upgraded anymore. From a platform perspective, I think they made the wrong choice when the majority of their install base has turned into abandonware.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: