3 ms·
> You cannot really force the vendors to ship open source drivers for your OS. But currently, mobile SoC vendors _are_ shipping open source drivers. They must
by codewiz 5y ago
> You cannot really force the vendors to ship open source drivers for your OS.
But currently, mobile SoC vendors _are_ shipping open source drivers. They must release the source code of kernel-mode drivers in compliance with the GPL.
The problem with SoC drivers is that they're not upstreamed and upstreaming them would require major effort and specialized knowledge. SoC vendors work under intense scheduling pressure and feel the need to cut corners. In other words, this code remains outside the mainline kernel because it doesn't meet the quality bar set by Linux maintainers.
Many mobile hardware vendors don't even see value in maintaining a single kernel tree supporting all their SoCs: their approach is to freeze on an LTS kernel early in the development cycle of a particular generation and then never rebase their changes onto newer kernels. They also work mostly in secret until the new SoC is unveiled.
A stable driver API would appear to solve this problem, but actually causes huge constraints for kernel development while not solving the actual driver quality issue. GKI is an attempt to go down this path, but several kernel hackers disapprove it:
https://source.android.com/devices/architecture/kernel/generic-kernel-image https://source.android.com/devices/architecture/kernel/gener...
- hutzlibu 5y ago"A stable driver API would appear to solve this problem, but actually causes huge constraints for kernel development while not solving the actual driver quality issue. " Why do you think that is? (the criticism of GKI seems to be because of different issues) As far as I understand, it is quite a deliberate choice of linux to actually force vendors to open source their drivers. So what happens now is what you describe: the drivers get written against one lts kernel and then shipped and mostly forgotten. (Which is why I cannot really use my old android tablet anymore, despite the hardware did not degrade) With a stable driver ABI, I could update to a newer android and keep the drivers as they are. And with vendors writing drivers for a small and clear API - they could deliver better quality drivers, and update them - because they do not have tp deal with the very expensive whole kernel integration they have to redo for every kernel and every driver. So yeah, in rainbow fairy unicorn world they all just open source everything and work in harmony and collaboration for the greater good of humanity. But in reality right now, with proprietary being the standard mode, it is just a mess. And I prefer pragmatic solutions that actually improve the status quo.