Conversation

At this point, I don't think it's the case that most Linux kernel development is done upstream first. Most people have given up on doing that a long time ago. You get what you need working downstream, ship it, and maybe you try to upstream it but it'll take years to see benefits.
1
Here at AWS, in recent times for features like Nitro Enclaves and Elastic Fabric Adapter getting changes upstream was a launch gating milestone. Elastic Network Adapter, being "just" a NIC driver, was briefly only available out of tree. I think "upstream first" is still needed.
1
Android hasn't had a substantial kernel fork for years. It works with mainline kernels. SoC vendors take latest LTS branch when developing their SoC, implement all their drivers for it, often with a lot of new/rewritten code rather than it just being a minor port from old code.
1
They defined a stable ABI for kernel modules and hardware support will be done primarily via out-of-tree modules targeting a stable ABI for an LTS branch. ABI can't be at all stable across LTS versions. They won't convince Linux to do anything like that any time soon.
1
A particularly painful example is that they switched from ashmem to memfd despite losing the ability to unpin/pin pages similarly to MEM_RESET and MEM_RESET_UNDO on Linux where you can tell the kernel it can free that memory if there's memory pressure but you can ask for it back.
1
1
This was used by web browsers to implement volatile caching aware of memory pressure on Android as they do on Windows since the kernel takes care of it and purges the caches. No such thing on non-Android Linux and now it will be gone on Android, increasing browser memory use.
1
1
It doesn't change that over half of the kernel code comes from the SoC vendor. It's just not going to be part of the core kernel but rather dynamically loaded kernel modules loaded from boot_vendor / vendor with enforced ABI stability between them with similar tooling as Treble.
1
I think getting SoC vendor hardware support upstream is pretty much a lost cause at this point and 6 years of LTS support + Generic Kernel Images + ABI stability for modules is going to massively reinforce it. I guess Google will upstream everything for their own SoC at least...
1
Show replies
Replying to
I helped get MADV_FREE landed and that's a form of lazy free designed for use with malloc/free and similar systems. It does result in the weird property of uninitialized malloc memory being able to change from non-zero data to zero data, but that's how GCC/LLVM already handle it.
1
1
Show replies