[Google Pixel ROMs, Kernels, Recoveries, & Other De] :
EXNS_EAS kernel versions, differences and features:

v2.x kernel:

First, I'll just say that v2.9 is basically the same as v2.8.2. however, there are a few notable differences;

- I've updated binder, ashmem, ion, msm_ion, etc

- the kernel is build with LTO (link-time Optimization), pulled from v3.7

- it's received some bug fixes from v3.7

v3.x series:

Now, I'll try to outline some of the differences in v3.7 (and the v3.x kernel, in general). While v2.9 has a number of backports, namely sched, locking, a bit of mm and block. v3.x does away with much of the 3.18 code base. here's a short list of subsystems that are affected;

- VFS (4.0+)

- File locking (4.0+)

- TTY layer (4.4+)

- Workqueues (4.6+)

- Tracing (4.0+)

- NFS (4.0+)

- Block (4.0+, lots of code from 4.4 too, but i avoided backporting some tricky code)

- MM (4.0-4.6 ~ but it's a mixed bag, as I've selectively backported things)

- Scheduler (4.4+, not including EAS changes. plus lots newer sched code)

- Locking (4.4+, contains a number of much newer changes too)

- RCU (4.4 ~ as mentioned I just did a proper port for this)

- Kthread (4.4+)

- Genirq (upstream'd to a point + added a few commits to make use of SultanXDA's patchset/API for marking irqs / kthreads as performace critical, which wouldn't work otherwise)

In all cases, this code is generally upstream'd beyond linux-4.0, while a lot of it actually exceeds linux-4.4+ ~ it varies depending on the subsystem / what I decided to backport. (as shown above). But I think this covers the "upstream" backporting differences.... It's also important to remember that with pulling modern kernel code into my kernel ~ I get to use a lot of modern apis/features and generally, you end up with a lot of fixes and optimizations that aren't in Marlin's vanilla sources.

But there are also lots of change/features that have nothing to do with upstream/backports from (mainline/LTS) linux kernels;

#1 - v3.x also merging in parts of the PREEMPT_RT patchset.

For anyone who is actually familiar with PREEMPT_RT and mainline kernel development, you might know that over the last 10years RT development has had a serious impact on mainline linux, improving it's "soft-realtime" capabilities. e.g: hrtimers came from RT, so did forced IRQ threading, "swait" (simple waitqueus), the hardware latency detector and also a number of other great features.... A number of the patches for RT have facility/use beyond PREEMPT_RT, knowing this ~ I grabbed up stuff that I know hit (or will hit) mainline or that I could use. ~ this was all a bit interesting as I had to use a combination of PREEMPT_RT 3.18, 4.4 and 4.9 kernel patches (since my v3.x kernel is a real mixedbag. lol)

- I've implemented simple waitqueues, simple work

- I've pulled in some related RCU changes

- (and stuff mentioned in #2. aka: decoupling workqueues from scheduler)

- locallocks

- a few other bits

#2 - my scheduler code and workqueues code has seen some MASSIVE rewites (partially due to #1, partly due to the fact it's a never ending moving target, well ~ until I got the rest of it to be basically 4.9-eas). This code in my kernel also has downstream changes, stuff not in mainline, msm kernels, EAS or RT... It took a while to iron this out. all of the workqueue code is moved out of the scheduler, There's also some overhead removed by hiding schedstats (most of it) behind a sysfs switch, that is disabled by default, etc. ~ likewise, there are a few optimizations pulled from much newer kernels...

#3 - support for SultanXDA's API to mark IRQs and kthreads as performance critical

...and I've grabbed up the related patches, used within the kernel - marking important kthreads/irqs. * while I was at it, also picked up a few other patches from his Wahoo kernel.

ref: https://github.com/sultanxda/androi...mmit/82dbad4003c22363483beef91db866415ae3433b

#4 - RCU: v3.7 has a complete RCU 4.4 backport (in v2.8.2 there is some backported RCU stuff, but it's been reverted in v3.7 / redone).

This already has yielded some improvements and also allows enabling RCU_EXPEDIATED_BOOT - which speeds up early-boot... But on top of this stuff, there are some other changes, relating the the PREEMPT_RT changes. Plus, a couple of other one-offs.

.....

There's some TODOs that I can begin working on, now that I've rebased the kernel... Namely, I can get back to working on Dynamic_Stune_boost && Boostbox... While I do integrate DSB from Project EAS - I also have some of my own changes in the works, to be used in Boostbox... It might take me a release or three to get this resolved and enabled in builds. (as I have a couple different implementations that I'm testing...

hmmm... I feel like I'm missing a few features, oh well! ~ if I remember, I will edit post.