[Google Pixel ROMs, Kernels, Recoveries, & Other De] GuestK0037:
Mod edit: Thread closed on owner's request!

exNoShadez-EAS Kernel

FEATURES

- Current LTS release -> Linux-3.18.114

- Energy Aware Scheduling

- Schedutil (default Cpu Governor)

- RCU infrastructure backport (with expert mode enabled)

- Cpu-Boost / Input Boosting (enabled by default)

- BINFMT_MISC support (NOT mounted on boot).

- Kernel Hardening/Protection (CopperheadOS/Grsec/Pax Marlin kernel hardening features)

- leds-qpnp: Notification LED control - V1.1c (Boeffla) - Adapted for Marlin

- Binder_rt = My own re-implementation of AOSP Binder that uses rt_mutexes; supporting priority inheritance

- Improved scheduling/determinism for high priority threads/tasks

- Backported Scheduling, Locking and Workqueue subsystem code from Newer Linux kernels.

- Audio Driver enhancements / backports (from Wahoo/Pixel 2)

- Sound/Audio driver Tweaks (bug fixes, scheduling improvements)

- forced Interrupt threading enabled

- Wifi Mac Address Randomization

- WireGuard VPN kernel module support (more info soon)

- KCal Advanced Colour control

- Improved ASLR (in kernel)

- USB Fast Charge

- Wake Gestures

- GCC 6/7+ Fixes

- Built with GCC-8.x-dev

- and more

Contains code from everywhere: Code Aurora, Flar2/Marlin, CopperheadOS, AOSP, Project-EAS, Freak7/Kirisakura, Linaro, Pixel 2 kernel sources, mainline linux and elsewhere. Modifications and backports by me, as well.

BACKGROUND

I wanted a kernel for My Pixel that had 'all of the things', it didn't exist... So I'm working on my own kernel. I try to balance Security/hardening, experimental features with high Performance and battery life. <- not an easy task! ... Some of the security features do come with overhead, but if you use apps that are CPU heavy / processing and/or require low latency - they will perform well (at the cost of chewing some battery life, of course).... Battery life and SOT are very reasonable though.

WARNING / VERY IMPORTANT: This kernel isn't compatible with installing TWRP ~> meaning; you must use the fastboot version of TWRP (used in RAM) , flash the kernel and NOT install TWRP to your system (the kernel is too big for TWRP to co-exist).... This may sound inconvenient, but there are a number of valid reasons to avoid reducing a kernel's size in order to support TWRP installation, in the boot partition.

***Fun facts on this subject below => in the 2nd post: PLEASE READ: to understand my motivation***

TWRP REMOVAL

*To remove TWRP from your system; You need the stock boot.img from your running/current firmware (which is inside of the factory image zips) or use the Nov Stock boot.img provided here. Then it's as simple as flashing the boot.img to wipe TWRP;

fastboot flash boot_a /path/to/boot.img

fastboot flash boot_b /path/to/boot.img

Stock 8.1 July 2018 Boot.img => https://github.com/nine7nine/Apps/raw/master/SailfishStockJulyBoot.img

Now you can proceed with using the TWRP fastboot boot.img to flash my kernel, magisk/supersu or whatever else....

Fastboot twrp boot image => https://dl.twrp.me/sailfish/twrp-3.2.2-0-sailfish.img

WARNING: This shouldn't need to be said, but we did have someone who did this, so I'm adding a sticky/warning here; do NOT EVER re-lock your bootloader after flashing any kind of custom software, kernels, etc to your device - *it will brick your phone*. Meaning you are screwed would need an RMA / replacement device ... everyone in the XDA community should know better, but still; worth mentioning....

IMPORTANT:

Before asking questions; Please read through the thread (starting with the last few pages) - I shouldn't need to be repeatedly answering the same questions over and over again. It's good practice to get into the habit of reading through threads before asking questions in any thread on XDA, as more often then not; you're question has probably been answered. Thanks!

EXNS-EAS KERNEL DOWNLOAD:

JULY 2018 OREO 8.1 RELEASE exNoShades-eas Kernel Flashable zip

https://github.com/nine7nine/Apps/raw/master/exNoShadez_eas_v2.8.2_f94351f.zip

It is stable, high performance and very responsive...

Important: You will need root; I don't support non-rooted devices && some features require it. I recommend using Magisk; https://xdaforums.com/apps/magisk/beta-magisk-v13-0-0980cb6-t3618589 ...

NOTE: Make sure to flash the latest Magisk beta *before* flashing the kernel zip. ...

More Background / Important Notes:

Binder_RT:

My own port and re-implementation of the Binder Kernel Driver; a slightly modified version of The AOSP binder.

Binder_RT uses rt_mutexes as opposed to mutexes for locking in Binder, ion, ashmem, etc... rt_mutexes support priority inheritance and should improve determinism in Binder, speed up IPC, Ion and Ashmem => Allowing applications that require low-latency, tight deadlines, low jitter and deterministic behaviour to perform better ~ This re-implementation is proving to be the great for those types of applications. The goal here is to help ensure that the Kernel and Binder's high priority && time critical threads and tasks are properly prioritized... Example; audio buffers arriving on time / no buffer underruns... *Further development work is planned to research, experiment with and improve Binder_RT.

rt_mutex documentation, for those interested;

https://github.com/nine7nine/Marlin_exns-eas/blob/EXNS_EAS/Documentation/locking/rt-mutex.txt

https://github.com/nine7nine/Marlin_exns-eas/blob/EXNS_EAS/Documentation/locking/rt-mutex-design.txt

CPU-Boost / Input Boosting:

Touch inputs boost CPU frequencies (thus improves performance and responsiveness).

# Cpu-boot / Input boost settings

write /sys/module/cpu_boost/parameters/input_boost_enabled 1

write /sys/module/cpu_boost/parameters/input_boost_freq "0:1363200 1:0 2:1900800 3:0"

write /sys/module/cpu_boost/parameters/input_boost_ms 100

IO/ CPU Governors:

This kernel doesn't include a thousand io/cpu governors. IO-wise; CFQ is the default, but we've got a few in there. chose your poison, but know that the majority of my testing is centered around cfq and deadline. CPU Governor-wise the common Linux CPU governors are there; along with Sched and Schedutil....

Stick with Schedutil - on idle, it draws very little power and in most 'peak performance situations, it should do very well..... I'm getting great battery life, sot and performance.

Managing Kernel Settings:

Get EX Kernel Manager - my original code on github was forked from EX kernel, before rebasing it - but EXKM will give you access to 99% of my kernel's settings.

My 8.1 Kernel Sources: https://github.com/nine7nine/Marlin_exns-eas

Donations via PayPal very much appreciated. I do put a significant amount of energy and time into researching, development, testing / QA and also providing support/help to end-users... It's definitely not mandatory to donate; but If you appreciate the effort, see value or benefits from using my kernel on your device and can afford to; Use the "Donate to me" button or the below link... It makes a big difference. thanks!

https://www.paypal.me/jrdnjhnstn