Development [r26] arter97 kernel for OnePlus 9 series

Search This thread

arter97

Recognized Developer
Oct 14, 2012
3,881
34,637
26
Seoul
arter97-xda.png



arter97 kernel for OnePlus 9 series running OxygenOS

/* Features */

Supports OnePlus 9 series
Fully rebased kernel without unnecessary OnePlus code
Latest CAF msm-5.4 kernel fully merged
Latest Linux v5.4 subversion merged
Latest Google’s security fix merged
BBR as the default TCP network congestion control
Features the latest WireGuard
Modules support disabled for lighter kernel
Latest Wi-Fi drivers from Qualcomm with customized config
Built with Clang 13 and ThinLTO
Power optimizations
Memory management optimizations
Latest SELinux subsystem backported from mainline
Latest f2fs backported from mainline
Latest BFQ I/O scheduler backported from mainline
mmap/mremap backported from mainline for a major performance boost
Touchscreen optimizations for lower latency
Uses LRNG for better performance

/* Details */

- Fully rebased kernel without unnecessary OnePlus code -



This kernel is not based on the stock OxygenOS kernel source provided by OnePlus. Instead, it’s based on the latest and greatest Qualcomm has to offer. Only the necessary parts from the OnePlus kernel have been cherry-picked, such as OnePlus 9 specific device drivers.

This effectively kills all kernel modifications/optimizations from OnePlus, including the infamous app throttler.
Due to the completely different base, this kernel will behave drastically different from other kernels, in both good and bad ways.


- Power optimizations -


This kernel makes some conscious decisions for reducing power consumption.

First, the stock OnePlus configuration forces display-related processes to use the big cores exclusively.
This configuration brings a huge power regression since it makes every frame dispatch to wake up and use the power-hungry cores.

This kernel resets this profile to use the configuration Google recommends, which is to use the LITTLE cores exclusively instead. (Reverted in r2 as it seems like that little cores aren't enough to drive 120 Hz fluidly.)
This kernel allows these processes to use little and middle cores (0-6), depending on the load.

Second, this kernel disables wakelocks upon Wi-Fi’s RX unicast packet transmissions. qcom_rx_wakelock is one of the major culprits to increased idle power consumption. Although its total wakelock time is quite low, it's catched very frequently and prevents the system from entering suspend repeatedly.

As dropping unicast or local ARP packets doesn’t pose practical issues on Android, this kernel disables qcom_rx_wakelock.

Third, this kernel reduces the duration of the Bluetooth ISR wakelock from 2 seconds to 100ms. This was done from an observation that the average userspace response time from ISR is less than 10ms.
My kernels have been doing this for years and no Bluetooth-related issues were reported.

Fourth, the vibrator driver used in this kernel no longer controls the cpuidle driver. The stock kernel disables the cpuidle whenever the vibrator is used. This kernel disables it as the vibrator is not that sensitive to deadline misses.

There are other small improvements throughout the kernel tree as well.


- Memory management optimizations -


This kernel marks the first Linux v5.4 based Android kernel to have MGLRU backported.

MGLRU is a big deal in everything Linux related, especially for Android.
Esper have a great article on what is MGLRU in a nutshell: https://blog.esper.io/android-dessert-bites-22-linux-memory-management-38419756/

TL;DR:
According to Google’s fleetwide profiling, multi-generational LRU yields an “overall 40% decrease in kswapd [the kernel daemon that manages virtual memory] CPU usage,” an “85% decrease in the number of low-memory kills at the 75th percentile,” and an “18% decrease in app launch times at the 50th percentile.”

This kernel also disables LMKD and uses an in-kernel solution called SimpleLMK, made by kerneltoast. You can track how often SimpleLMK kicks in by monitoring:
Code:
/sys/module/lowmemorykiller/parameters/lmk_count

This kernel also changes a lot related to swap and zram.

The swap-related code has been backported from Linux v5.9 (link1, link2) to efficiently support fast swap device and allow swappiness over 100. This kernel currently sets swappiness to 160 on < 6GB of RAM, 120 on 8GB and 90 on 12GB.

zram has been also backported from mainline Linux and further tweaked to use block device writeback. This is equivalent to the recent “RAM Plus” feature that companies have been marketing that uses the internal storage to extend RAM.

This kernel uses zram writeback to offload idle pages (i.e., really, really unused RAM) to the internal storage. As it's extremely slow to bring pages back from UFS, writeback code works quite conservatively. It'll start to writeback pages that haven't been used for a day or two. It makes use of the hidden 2GB “last_parti” partition from the UFS storage.

Along with zram writeback,
this kernel also enables deduplication with xxHash. Each page stored in zram is checked for deduplication to further save memory. With these 2 features combined, RAM reaching 1GB is additionally saved, but your mileage may vary.

zram writeback is temporarily disabled to avoid lags on long uptime with r20.

The post boot script used in the stock ROM is also overridden and it sets the readahead to 128KB. As I/O workload under Android is mostly random, high readahead doesn’t help and only increases memory thrashing.

This kernel also incorporates a lot of patches to reduce/optimize memory allocations used throughout the entire kernel.

mmap/mremap code was also backported from Linux v5.10 to optimize ART (see here for more info).


- Latest subsystems -


This kernel backports the SELinux subsystem from mainline Linux. This includes caching improvements that drastically reduces time spent on lookups. 10K lines of code has been changed.

This kernel also backports f2fs (Flash-Friendly File System) from mainline Linux. This includes bug fixes and performance improvements such as shorter discard latency, more optimized GC logic for Android, and checkpoint merging.

BFQ I/O scheduler has also been backported from mainline Linux for better I/O performance.


- LRNG -


This kernel ditches the traditional RNG driver from the Linux kernel in favor of LRNG. See here and here for more info.

A rudimentary throughput benchmark shows an improvement of 10.5% (keep in mind that this is only one aspect of an RNG metric).


- Battery charging management -


- Battery charging code has been backported from OxygenOS 12. There are numerous fixes there.

- A case where the charger negotiation doesn't go smoothly, the stock kernel will have the charging current limited for prolonged time instead of retrying. This kernel retries AICL right after re-negotiation, so the charging speed will be fixed for this particular case.

- Users can now unlock 27W (9V 3A) charging through USB-PD. From my testing, the battery charges 2% per minute.
Most decent USB-PD chargers should be capable of 27W (including all PD chargers that I personally own), but do note that this is dangerous if you connect to a non-27W capable charger (i.e., 3A unsupported on the 9V voltage profile) when this is enabled.
Write 0 to /sys/modules/oplus_chg/parameters/limit_pd enable this new behavior.

- OnePlus lowers the temperature limit when the screen is on for cooler user experience. Users can now also change this behavior and allow the device to get a little hotter by forcing the kernel to behave the same during screen-on and screen-off.
This is not dangerous but it'll obviously mean the device will be hotter when you use it and charge it simultaneously.
Write 1 to /sys/modules/oplus_chg/parameters/ignore_screen_state to do this.

- This build now disables surface temperature monitoring in the charging code for non-SuperWarp chargings. This mechanism is a separate one from what's described above, and I've personally ran into multiple charging annoyances due to this, resulting in a super slow 3W charging when I need to charge urgently.
OnePlus have set the threshold too low, resulting in real charging issues in practice. This behavior is somewhat lifted with OxygenOS 12, and my kernel takes it further and removes it entirely for non-SuperWarp charges as other perfectly fine safety mechanisms exist.

See the commit for more details:


/* Notice */

OxygenOS 12 is unsupported.
Non-OxygenOS custom ROMs are supported, but your mileage may vary wildly. Most notably, gesture orientations on some ROMs may be inverted.
Custom ROMs that uses OxygenOS 12 kernel, including LineageOS 19.1, are not supported.

This kernel touches vendor_boot and dtbo partitions, meaning you'd need to restore said partitions whenever you're switching to another kernel or stock.
Please make a back-up of these partitions. The installer doesn’t do this automatically for you. Installing the stock ROM with a full OTA restores said partitions as well.

/* Disclaimer */

Your warranty is now void.
I am not responsible for bricked devices, dead SD cards,
thermonuclear war, or you getting fired because the alarm app failed. Please
do some research if you have any concerns about features included in this kernel
before flashing it! YOU are choosing to make these modifications, and if
you point the finger at me for messing up your device, I will laugh at you. Hard. A lot.

/* Thanks to */

Vishalcj17
kristofpetho
kdrag0n
kerneltoast (SultanXDA)

/* Instructions */

1. Read the above. Please.
2. Flash the zip file from FK Kernel Manager. Any other installation methods are untested.

/* Downloads and links */

arter97.com
Kernel source
Telegram chat link
 
Last edited:

arter97

Recognized Developer
Oct 14, 2012
3,881
34,637
26
Seoul
/* Changelog */

r27

Simple LMK fix merged (lesser app kills)
Built with LLVM 16.0.3 compiler
LA.UM.9.16.r1-13100-MANNAR.QSSI13.0 merged
Linux v5.4.242 merged
f2fs fixes merged from Linux v6.4
Wi-Fi drivers updated to 2.0.8.32U

r26
Switched to LLVM 16 compiler
Merged a few GPU improvement patches from Snapdragon 8 Gen 2 kernel
Removed unnecessary overhead from kmap_atomic() for better performance
Fixed a kernel panic from connecting USB peripherals
Merged latest memory-management fixes
LA.UM.9.16.r1-12900-MANNAR.QSSI13.0 merged
LA.UM.9.14.r1-21300-LAHAINA.QSSI12.0 merged
Linux v5.4.237 merged
Latest exFAT from Linux v6.3 merged
Latest f2fs from Linux v6.3 merged
Wi-Fi drivers updated to 2.0.8.32R
2023-03-05 security patch merged

r25
Applied memory-management patches from kerneltoast to improve responsiveness (ported by Kaz205)
Added a workaround to f2fs to perform GC better
Merged latest memory-management fixes
LA.UM.9.16.r1-12700-MANNAR.QSSI13.0 merged
Linux v5.4.228 merged
Latest exFAT from Linux v6.2 merged
Latest f2fs from Linux v6.2 merged
Wi-Fi drivers updated to 2.0.8.31V
2023-01-05 security patch merged

r24
Disabled DFS on AP mode to remove 60 seconds delay on hotspot activation
LA.UM.9.14.r1-20800-LAHAINA.QSSI13.0 merged
Linux v5.4.224 merged
Latest exFAT from Linux v6.1 merged

r23
Reverted a commit that can cause CPU temperature monitoring issues
Memory management fixes merged made from upstream
Latest MGLRU patches merged (1669 lines changed)
Battery percentage report fixed (from LineageOS)
Battery charging code backported from OxygenOS 12
Fixed a stock kernel bug where charging current is limited for a prolonged time
27W (9V 3A) USB-PD charging unlocked (should be manually enabled)
Added screen-state-aware charging toggle
Surface temperature monitoring disabled for better charging
Now built with the latest Clang 15.0.3
Some patches merged from Amazon AWS Linux fork
RTL8152/8153 drivers updated to v2.16.3
Some patches merged from a downstream fork, made by buzzcut_s
LA.UM.9.14.1.r1-07500-QCM6490.QSSI13.0 merged
Latest f2fs from Linux v6.1 merged
Linux v5.4.222 merged
Wi-Fi drivers updated to 2.0.8.31H
Latest exFAT from Linux v6.0 merged
2022-10-05 security patch merged
Latest WireGuard merged

r21
Proactive compaction backported for better long-term performance
Switched I/O scheduler from BFQ to Samsung's SSG for lower CPU overhead and better Android-specific optimizations
Wi-Fi drivers updated to 2.0.8.30E
RTL8152/8153 drivers updated to v2.16.1
Latest f2fs fixes from Linux v5.19 merged
Some patches merged from a downstream fork, made by buzzcut_s
Storage performance improved (fuse)
HL/HMARK netfilter modules enabled for TTL modifications (hotspot)

r20
Backported MGLRU (a major change)
Fixed full system crash on some custom ROMs (by LibXZR)
Added a few memory patches to improve responsiveness (by kerneltoast)
Fixed page allocation failures introduced from mainline
SimpleLMK re-enabled after fixing soft random reboots
Fixed excessive RMNET_DFC wakelock
Fixed OnePlus charging code to handle worker failure
Backported updated arm64 memory functions for better performance
Disabled REFCOUNT_FULL to optimize performance over security
Tuned swap/zram configurations
Disabled zram writeback to avoid lags on long uptime
Optimized pstore for better performance
Added haptic level adjustment by flar2
Reduced memory usage by matching CONFIG_CMA_AREAS to minimum required
Re-enabled arm64 erratum that was previously disabled by mistake
Fixed rare random reboots (zsmalloc patch by kerneltoast)
Backported more BFQ commits from mainline
Backported mm/mremap fix from mainline
Now built with the latest Clang 14.0.7
Device-tree updated to LA.UM.9.14.r1-19300-LAHAINA.QSSI13.0
LA.UM.10.9.1.r1-02800-QCS610.0 merged
LA.UM.9.16.r1-11000-MANNAR.0 merged
Latest f2fs from Linux v5.19 merged
Linux v5.4.197 merged
Wi-Fi drivers updated to 2.0.8.29W
Latest exFAT from Linux v5.19 merged
Latest LRNG v45 merged
2022-06-05 security patch merged

r12
Fingerprint code merged with latest the LineageOS
90 Hz timing removed for custom ROMs to avoid noticeable gamma shifts
Now built with the latest Clang 13.0.3
Linux v5.4.186 merged
Latest exFAT from Linux v5.18 merged
LA.UM.9.14.r1-19300-LAHAINA.QSSI13.0 merged
Wi-Fi drivers updated to 2.0.8.27T

r11
Added support for non-OxygenOS, custom ROMs (screen-off gesture orientations may be inverted)
Added a workaround to prevent soft random reboots due to memory management
Fixed a fingerprint-related memory-leak from OnePlus display source code
Merged a few f2fs patches to improve responsiveness
Backported more BFQ commits from mainline
Backported mm/mremap fix from mainline
Latest WireGuard merged
LA.UM.9.16.r2-03700-MANNAR.0 merged
Linux v5.4.184 merged
Wi-Fi drivers updated to 2.0.8.27S
2022-03-05 security patch merged

r10
Bug-fix, stable release

r8
Fixed r7's memory optimizations
Merged latest exFAT

r7
Fixed a SELinux memory leak that happened since r1a12 (thanks to @Kaz205 for reporting and testing)
Merged some memory operation optimizations
Further improved the workaround to fix unwanted doubles presses from the power button

r5
LA.UM.9.16.r2-03500-MANNAR.0 merged
Linux v5.4.179 merged
Wi-Fi drivers updated to 2.0.8.26Z
2022-02-05 security patch merged
Backported UNIX socket latency optimization from Linux v5.17

r4
Fixed lmkd not working, resulting in freezes
Minor performance and power optimizations
Linux v5.4.175 merged

r3
SimpleLMK disabled for now to fix random soft reboots
Fixed random app crashes and freezes due to op_cgroup
Bluetooth drivers re-worked to fix Bluetooth-related issues
USB malfunctions fixed (dwc3)
LA.UM.9.14.r1-18900-LAHAINA.0 merged
LA.UM.10.9.1.r1-00800-QCS610.0 merged
Linux v5.4.174 merged
Wi-Fi drivers updated to 2.0.8.26T
2022-01-05 security patch merged
Latest WireGuard merged
Latest f2fs from Linux v5.17 merged
Latest LRNG v43 merged
Read-write semaphore backported from Linux v5.16 to improve smoothness under heavy I/O
Now built with the latest Clang 13.0.2
Disabled SLUB per-CPU partial caches for better latency (by Sultan)

r2
Display-related processes are now allowed to use the middle cores as well for better smoothness
Enabled more mremap() performance improvement that was missing from r1
LA.UM.9.14.r1-18400-LAHAINA.0 merged
LA.UM.9.16.r1-08100-MANNAR.0 merged
LA.UM.10.9.1.r1-00300-QCS610.0 merged (contains a lot of new improvements including power optimizations)
Linux v5.4.159 merged
Wi-Fi drivers updated to 2.0.8.25M
2021-11-06 security patch merged
Watermark boosting disabled to fix aggressive app killings (by Sultan)
Workaround added to fix unwanted doubles presses from the power button

r1
First stable release
 
Last edited:

rejectedjs

Senior Member
Apr 1, 2012
460
154
Holy **** this is exciting. This kernel is the one that I ran back on my OP7P and it's why I loved that phone so much. Is the 9 why you stopped development on that device?
 
  • Like
Reactions: galaxys

basboosa

New member
Mar 16, 2018
2
3
Does vendor _boot get altered after flashing kernel meaning flash back untouched backed up vendor boot to take next ota?

Was using this kernel briefly, and just updated to 11.2.9.9 (Global), had to flash stock vendor_boot, dtbo, and boot to be able to upgrade.


Anyone running this yet? If so how is it? Thinking of flashing this on stock 11.2.9.9

During my brief time using the kernel, had a minor issue whereby AUX (via USB-C) in my car wasn't working.


BTW thanks for the awesome kernel, planning to use it once wireguard support is added!
 

arter97

Recognized Developer
Oct 14, 2012
3,881
34,637
26
Seoul
Another new alpha build is up with big changes yet again.
I still have quite a few TODOs left, but I ported many changes from my OnePlus 7 Pro kernel.

Wi-Fi will behave differently with this kernel, so please let me know if you encounter Wi-Fi issues.

r1a7

Wi-Fi configuration merged with the latest CAF
Wi-Fi's rx_wakelock disabled and removed
Support for WireGuard added
Bunch of memory optimizations
Bunch of optimizations for screen and the GPU driver
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 68
    arter97-xda.png



    arter97 kernel for OnePlus 9 series running OxygenOS

    /* Features */

    Supports OnePlus 9 series
    Fully rebased kernel without unnecessary OnePlus code
    Latest CAF msm-5.4 kernel fully merged
    Latest Linux v5.4 subversion merged
    Latest Google’s security fix merged
    BBR as the default TCP network congestion control
    Features the latest WireGuard
    Modules support disabled for lighter kernel
    Latest Wi-Fi drivers from Qualcomm with customized config
    Built with Clang 13 and ThinLTO
    Power optimizations
    Memory management optimizations
    Latest SELinux subsystem backported from mainline
    Latest f2fs backported from mainline
    Latest BFQ I/O scheduler backported from mainline
    mmap/mremap backported from mainline for a major performance boost
    Touchscreen optimizations for lower latency
    Uses LRNG for better performance

    /* Details */

    - Fully rebased kernel without unnecessary OnePlus code -



    This kernel is not based on the stock OxygenOS kernel source provided by OnePlus. Instead, it’s based on the latest and greatest Qualcomm has to offer. Only the necessary parts from the OnePlus kernel have been cherry-picked, such as OnePlus 9 specific device drivers.

    This effectively kills all kernel modifications/optimizations from OnePlus, including the infamous app throttler.
    Due to the completely different base, this kernel will behave drastically different from other kernels, in both good and bad ways.


    - Power optimizations -


    This kernel makes some conscious decisions for reducing power consumption.

    First, the stock OnePlus configuration forces display-related processes to use the big cores exclusively.
    This configuration brings a huge power regression since it makes every frame dispatch to wake up and use the power-hungry cores.

    This kernel resets this profile to use the configuration Google recommends, which is to use the LITTLE cores exclusively instead. (Reverted in r2 as it seems like that little cores aren't enough to drive 120 Hz fluidly.)
    This kernel allows these processes to use little and middle cores (0-6), depending on the load.

    Second, this kernel disables wakelocks upon Wi-Fi’s RX unicast packet transmissions. qcom_rx_wakelock is one of the major culprits to increased idle power consumption. Although its total wakelock time is quite low, it's catched very frequently and prevents the system from entering suspend repeatedly.

    As dropping unicast or local ARP packets doesn’t pose practical issues on Android, this kernel disables qcom_rx_wakelock.

    Third, this kernel reduces the duration of the Bluetooth ISR wakelock from 2 seconds to 100ms. This was done from an observation that the average userspace response time from ISR is less than 10ms.
    My kernels have been doing this for years and no Bluetooth-related issues were reported.

    Fourth, the vibrator driver used in this kernel no longer controls the cpuidle driver. The stock kernel disables the cpuidle whenever the vibrator is used. This kernel disables it as the vibrator is not that sensitive to deadline misses.

    There are other small improvements throughout the kernel tree as well.


    - Memory management optimizations -


    This kernel marks the first Linux v5.4 based Android kernel to have MGLRU backported.

    MGLRU is a big deal in everything Linux related, especially for Android.
    Esper have a great article on what is MGLRU in a nutshell: https://blog.esper.io/android-dessert-bites-22-linux-memory-management-38419756/

    TL;DR:
    According to Google’s fleetwide profiling, multi-generational LRU yields an “overall 40% decrease in kswapd [the kernel daemon that manages virtual memory] CPU usage,” an “85% decrease in the number of low-memory kills at the 75th percentile,” and an “18% decrease in app launch times at the 50th percentile.”

    This kernel also disables LMKD and uses an in-kernel solution called SimpleLMK, made by kerneltoast. You can track how often SimpleLMK kicks in by monitoring:
    Code:
    /sys/module/lowmemorykiller/parameters/lmk_count

    This kernel also changes a lot related to swap and zram.

    The swap-related code has been backported from Linux v5.9 (link1, link2) to efficiently support fast swap device and allow swappiness over 100. This kernel currently sets swappiness to 160 on < 6GB of RAM, 120 on 8GB and 90 on 12GB.

    zram has been also backported from mainline Linux and further tweaked to use block device writeback. This is equivalent to the recent “RAM Plus” feature that companies have been marketing that uses the internal storage to extend RAM.

    This kernel uses zram writeback to offload idle pages (i.e., really, really unused RAM) to the internal storage. As it's extremely slow to bring pages back from UFS, writeback code works quite conservatively. It'll start to writeback pages that haven't been used for a day or two. It makes use of the hidden 2GB “last_parti” partition from the UFS storage.

    Along with zram writeback,
    this kernel also enables deduplication with xxHash. Each page stored in zram is checked for deduplication to further save memory. With these 2 features combined, RAM reaching 1GB is additionally saved, but your mileage may vary.

    zram writeback is temporarily disabled to avoid lags on long uptime with r20.

    The post boot script used in the stock ROM is also overridden and it sets the readahead to 128KB. As I/O workload under Android is mostly random, high readahead doesn’t help and only increases memory thrashing.

    This kernel also incorporates a lot of patches to reduce/optimize memory allocations used throughout the entire kernel.

    mmap/mremap code was also backported from Linux v5.10 to optimize ART (see here for more info).


    - Latest subsystems -


    This kernel backports the SELinux subsystem from mainline Linux. This includes caching improvements that drastically reduces time spent on lookups. 10K lines of code has been changed.

    This kernel also backports f2fs (Flash-Friendly File System) from mainline Linux. This includes bug fixes and performance improvements such as shorter discard latency, more optimized GC logic for Android, and checkpoint merging.

    BFQ I/O scheduler has also been backported from mainline Linux for better I/O performance.


    - LRNG -


    This kernel ditches the traditional RNG driver from the Linux kernel in favor of LRNG. See here and here for more info.

    A rudimentary throughput benchmark shows an improvement of 10.5% (keep in mind that this is only one aspect of an RNG metric).


    - Battery charging management -


    - Battery charging code has been backported from OxygenOS 12. There are numerous fixes there.

    - A case where the charger negotiation doesn't go smoothly, the stock kernel will have the charging current limited for prolonged time instead of retrying. This kernel retries AICL right after re-negotiation, so the charging speed will be fixed for this particular case.

    - Users can now unlock 27W (9V 3A) charging through USB-PD. From my testing, the battery charges 2% per minute.
    Most decent USB-PD chargers should be capable of 27W (including all PD chargers that I personally own), but do note that this is dangerous if you connect to a non-27W capable charger (i.e., 3A unsupported on the 9V voltage profile) when this is enabled.
    Write 0 to /sys/modules/oplus_chg/parameters/limit_pd enable this new behavior.

    - OnePlus lowers the temperature limit when the screen is on for cooler user experience. Users can now also change this behavior and allow the device to get a little hotter by forcing the kernel to behave the same during screen-on and screen-off.
    This is not dangerous but it'll obviously mean the device will be hotter when you use it and charge it simultaneously.
    Write 1 to /sys/modules/oplus_chg/parameters/ignore_screen_state to do this.

    - This build now disables surface temperature monitoring in the charging code for non-SuperWarp chargings. This mechanism is a separate one from what's described above, and I've personally ran into multiple charging annoyances due to this, resulting in a super slow 3W charging when I need to charge urgently.
    OnePlus have set the threshold too low, resulting in real charging issues in practice. This behavior is somewhat lifted with OxygenOS 12, and my kernel takes it further and removes it entirely for non-SuperWarp charges as other perfectly fine safety mechanisms exist.

    See the commit for more details:


    /* Notice */

    OxygenOS 12 is unsupported.
    Non-OxygenOS custom ROMs are supported, but your mileage may vary wildly. Most notably, gesture orientations on some ROMs may be inverted.
    Custom ROMs that uses OxygenOS 12 kernel, including LineageOS 19.1, are not supported.

    This kernel touches vendor_boot and dtbo partitions, meaning you'd need to restore said partitions whenever you're switching to another kernel or stock.
    Please make a back-up of these partitions. The installer doesn’t do this automatically for you. Installing the stock ROM with a full OTA restores said partitions as well.

    /* Disclaimer */

    Your warranty is now void.
    I am not responsible for bricked devices, dead SD cards,
    thermonuclear war, or you getting fired because the alarm app failed. Please
    do some research if you have any concerns about features included in this kernel
    before flashing it! YOU are choosing to make these modifications, and if
    you point the finger at me for messing up your device, I will laugh at you. Hard. A lot.

    /* Thanks to */

    Vishalcj17
    kristofpetho
    kdrag0n
    kerneltoast (SultanXDA)

    /* Instructions */

    1. Read the above. Please.
    2. Flash the zip file from FK Kernel Manager. Any other installation methods are untested.

    /* Downloads and links */

    arter97.com
    Kernel source
    Telegram chat link
    19
    A major new testing release is up.

    Changes made in this round is big enough that I've decided to name it r20.

    While the build has been stable for me, I'm marking this an alpha as a lot changed.

    r20a1 marks the first Linux v5.4 based kernel to have MGLRU backported.

    MGLRU is a big deal in everything Linux related, especially for Android.
    Esper have a great article on what is MGLRU in a nutshell: https://blog.esper.io/android-dessert-bites-22-linux-memory-management-38419756/

    TL;DR:
    According to Google’s fleetwide profiling, multi-generational LRU yields an “overall 40% decrease in kswapd [the kernel daemon that manages virtual memory] CPU usage,” an “85% decrease in the number of low-memory kills at the 75th percentile,” and an “18% decrease in app launch times at the 50th percentile.”

    Personally, I've noticed a sharp decrease in swap usage and improvements in general performance.

    Besides MGLRU, there are other numerous patches that are worth noting.

    I've brought back updated arm64 routines that were once tried in a beta release but removed later due to random kernel panics (mostly notable from Netflix). The mainline Linux kernel have gotten new updates since then, so r20a1 includes that.
    Also, some memory patches made by Sultan are also picked, and I've confirmed that those also help improving responsiveness.

    With all these memory stuffs going on, I've also changed swap/zram's parameters. You'll notice a difference in how many apps you can keep open, etc.

    The excessive RMNET_DFC wakelock that annoyed some users are now also gone by incorporating a fix from Snapdragon 8 Gen 1.

    All in all, this is indeed a pretty big release.
    I'm expecting mixed feedback, so please let me know how the new kernel behaves.

    /* Full changelog */

    Backported MGLRU
    Fixed full system crash on some custom ROMs (by LibXZR)
    Added a few memory patches to improve responsiveness (by Sultan)
    Tuned swap/zram configurations
    Backported updated arm64 memory functions for better performance
    Fixed excessive RMNET_DFC wakelock
    Fixed OnePlus charging code to handle worker failure
    Backported more BFQ commits from mainline
    Backported mm/mremap fix from mainline
    Latest WireGuard merged
    LA.UM.9.14.r1-19400-LAHAINA.QSSI13.0 merged
    Linux v5.4.190 merged
    Wi-Fi drivers updated to 2.0.8.28K
    2022-04-05 security patch merged
    Latest f2fs from Linux v5.18 merged
    Now built with the latest Clang 14.0.5
    Device-tree updated to LA.UM.9.14.r1-19300-LAHAINA.QSSI13.0
    18
    /* Changelog */

    r27

    Simple LMK fix merged (lesser app kills)
    Built with LLVM 16.0.3 compiler
    LA.UM.9.16.r1-13100-MANNAR.QSSI13.0 merged
    Linux v5.4.242 merged
    f2fs fixes merged from Linux v6.4
    Wi-Fi drivers updated to 2.0.8.32U

    r26
    Switched to LLVM 16 compiler
    Merged a few GPU improvement patches from Snapdragon 8 Gen 2 kernel
    Removed unnecessary overhead from kmap_atomic() for better performance
    Fixed a kernel panic from connecting USB peripherals
    Merged latest memory-management fixes
    LA.UM.9.16.r1-12900-MANNAR.QSSI13.0 merged
    LA.UM.9.14.r1-21300-LAHAINA.QSSI12.0 merged
    Linux v5.4.237 merged
    Latest exFAT from Linux v6.3 merged
    Latest f2fs from Linux v6.3 merged
    Wi-Fi drivers updated to 2.0.8.32R
    2023-03-05 security patch merged

    r25
    Applied memory-management patches from kerneltoast to improve responsiveness (ported by Kaz205)
    Added a workaround to f2fs to perform GC better
    Merged latest memory-management fixes
    LA.UM.9.16.r1-12700-MANNAR.QSSI13.0 merged
    Linux v5.4.228 merged
    Latest exFAT from Linux v6.2 merged
    Latest f2fs from Linux v6.2 merged
    Wi-Fi drivers updated to 2.0.8.31V
    2023-01-05 security patch merged

    r24
    Disabled DFS on AP mode to remove 60 seconds delay on hotspot activation
    LA.UM.9.14.r1-20800-LAHAINA.QSSI13.0 merged
    Linux v5.4.224 merged
    Latest exFAT from Linux v6.1 merged

    r23
    Reverted a commit that can cause CPU temperature monitoring issues
    Memory management fixes merged made from upstream
    Latest MGLRU patches merged (1669 lines changed)
    Battery percentage report fixed (from LineageOS)
    Battery charging code backported from OxygenOS 12
    Fixed a stock kernel bug where charging current is limited for a prolonged time
    27W (9V 3A) USB-PD charging unlocked (should be manually enabled)
    Added screen-state-aware charging toggle
    Surface temperature monitoring disabled for better charging
    Now built with the latest Clang 15.0.3
    Some patches merged from Amazon AWS Linux fork
    RTL8152/8153 drivers updated to v2.16.3
    Some patches merged from a downstream fork, made by buzzcut_s
    LA.UM.9.14.1.r1-07500-QCM6490.QSSI13.0 merged
    Latest f2fs from Linux v6.1 merged
    Linux v5.4.222 merged
    Wi-Fi drivers updated to 2.0.8.31H
    Latest exFAT from Linux v6.0 merged
    2022-10-05 security patch merged
    Latest WireGuard merged

    r21
    Proactive compaction backported for better long-term performance
    Switched I/O scheduler from BFQ to Samsung's SSG for lower CPU overhead and better Android-specific optimizations
    Wi-Fi drivers updated to 2.0.8.30E
    RTL8152/8153 drivers updated to v2.16.1
    Latest f2fs fixes from Linux v5.19 merged
    Some patches merged from a downstream fork, made by buzzcut_s
    Storage performance improved (fuse)
    HL/HMARK netfilter modules enabled for TTL modifications (hotspot)

    r20
    Backported MGLRU (a major change)
    Fixed full system crash on some custom ROMs (by LibXZR)
    Added a few memory patches to improve responsiveness (by kerneltoast)
    Fixed page allocation failures introduced from mainline
    SimpleLMK re-enabled after fixing soft random reboots
    Fixed excessive RMNET_DFC wakelock
    Fixed OnePlus charging code to handle worker failure
    Backported updated arm64 memory functions for better performance
    Disabled REFCOUNT_FULL to optimize performance over security
    Tuned swap/zram configurations
    Disabled zram writeback to avoid lags on long uptime
    Optimized pstore for better performance
    Added haptic level adjustment by flar2
    Reduced memory usage by matching CONFIG_CMA_AREAS to minimum required
    Re-enabled arm64 erratum that was previously disabled by mistake
    Fixed rare random reboots (zsmalloc patch by kerneltoast)
    Backported more BFQ commits from mainline
    Backported mm/mremap fix from mainline
    Now built with the latest Clang 14.0.7
    Device-tree updated to LA.UM.9.14.r1-19300-LAHAINA.QSSI13.0
    LA.UM.10.9.1.r1-02800-QCS610.0 merged
    LA.UM.9.16.r1-11000-MANNAR.0 merged
    Latest f2fs from Linux v5.19 merged
    Linux v5.4.197 merged
    Wi-Fi drivers updated to 2.0.8.29W
    Latest exFAT from Linux v5.19 merged
    Latest LRNG v45 merged
    2022-06-05 security patch merged

    r12
    Fingerprint code merged with latest the LineageOS
    90 Hz timing removed for custom ROMs to avoid noticeable gamma shifts
    Now built with the latest Clang 13.0.3
    Linux v5.4.186 merged
    Latest exFAT from Linux v5.18 merged
    LA.UM.9.14.r1-19300-LAHAINA.QSSI13.0 merged
    Wi-Fi drivers updated to 2.0.8.27T

    r11
    Added support for non-OxygenOS, custom ROMs (screen-off gesture orientations may be inverted)
    Added a workaround to prevent soft random reboots due to memory management
    Fixed a fingerprint-related memory-leak from OnePlus display source code
    Merged a few f2fs patches to improve responsiveness
    Backported more BFQ commits from mainline
    Backported mm/mremap fix from mainline
    Latest WireGuard merged
    LA.UM.9.16.r2-03700-MANNAR.0 merged
    Linux v5.4.184 merged
    Wi-Fi drivers updated to 2.0.8.27S
    2022-03-05 security patch merged

    r10
    Bug-fix, stable release

    r8
    Fixed r7's memory optimizations
    Merged latest exFAT

    r7
    Fixed a SELinux memory leak that happened since r1a12 (thanks to @Kaz205 for reporting and testing)
    Merged some memory operation optimizations
    Further improved the workaround to fix unwanted doubles presses from the power button

    r5
    LA.UM.9.16.r2-03500-MANNAR.0 merged
    Linux v5.4.179 merged
    Wi-Fi drivers updated to 2.0.8.26Z
    2022-02-05 security patch merged
    Backported UNIX socket latency optimization from Linux v5.17

    r4
    Fixed lmkd not working, resulting in freezes
    Minor performance and power optimizations
    Linux v5.4.175 merged

    r3
    SimpleLMK disabled for now to fix random soft reboots
    Fixed random app crashes and freezes due to op_cgroup
    Bluetooth drivers re-worked to fix Bluetooth-related issues
    USB malfunctions fixed (dwc3)
    LA.UM.9.14.r1-18900-LAHAINA.0 merged
    LA.UM.10.9.1.r1-00800-QCS610.0 merged
    Linux v5.4.174 merged
    Wi-Fi drivers updated to 2.0.8.26T
    2022-01-05 security patch merged
    Latest WireGuard merged
    Latest f2fs from Linux v5.17 merged
    Latest LRNG v43 merged
    Read-write semaphore backported from Linux v5.16 to improve smoothness under heavy I/O
    Now built with the latest Clang 13.0.2
    Disabled SLUB per-CPU partial caches for better latency (by Sultan)

    r2
    Display-related processes are now allowed to use the middle cores as well for better smoothness
    Enabled more mremap() performance improvement that was missing from r1
    LA.UM.9.14.r1-18400-LAHAINA.0 merged
    LA.UM.9.16.r1-08100-MANNAR.0 merged
    LA.UM.10.9.1.r1-00300-QCS610.0 merged (contains a lot of new improvements including power optimizations)
    Linux v5.4.159 merged
    Wi-Fi drivers updated to 2.0.8.25M
    2021-11-06 security patch merged
    Watermark boosting disabled to fix aggressive app killings (by Sultan)
    Workaround added to fix unwanted doubles presses from the power button

    r1
    First stable release
    18
    r2 is up, and it's a big release.

    Changelog is quite self-explanatory.

    r2
    Display-related processes are now allowed to use the middle cores as well for better smoothness
    Enabled more mremap() performance improvement that was missing from r1
    LA.UM.9.14.r1-18400-LAHAINA.0 merged
    LA.UM.9.16.r1-08100-MANNAR.0 merged
    LA.UM.10.9.1.r1-00300-QCS610.0 merged (contains a lot of new improvements including power optimizations)
    Linux v5.4.159 merged
    Wi-Fi drivers updated to 2.0.8.25M
    2021-11-06 security patch merged
    Watermark boosting disabled to fix aggressive app killings (by Sultan)
    Workaround added to fix unwanted doubles presses from the power button
    16
    After using the kernel myself and daily driving for few days and monitoring how the kernel behaves, I now feel comfortable to mark it stable.

    r1 is released.

    The original post is re-written to feature what's special with this kernel.
    Please take your time and re-read the original post.