Changelog for 3.0.0 below:
Alright here´s the next update and it´s a very big one that´s why I decided to bump the kernel version to 3.0.0.
I decided to rebase the kernel ahead of time. The base kernel is now build upon the Android 13 branch, but made to work on A12 by reverting a few changes that depend on too much firmware updates outside the kernel. That will also ease the transition for me once A13 stable is dropped.
Thanks to the way the kernel is build the GKI way, the rest of the device specific drivers could be adjusted to work on A12 as well.
There are quite a few improvements overall on the A13 branch and now we can take advantage of them before A13 drops as stable. Please note this kernel is made to work on
A12 stable June firmware, not A13 beta.
Thanks to
@capntrips and all his hard work on hashtree patcher, there should be no problems flashing the updated kernel.zip on latest magisk canary (which some users may want to use to fix certain apps otherwise detection root) while leaving the verity/verification flags enabled when updating the phone as it´s integrated in the kernel.zip now. A huge thanks to
@capntrips at this point.
I will also stop distributing the files for the manual install as flashing via
@capntrips kernel flasher app, which
can be found here, is open source and free, works perfectly fine for me and that spares me a lot of work for each release.
Now to the actual kernel changes:
The kernel was rebased on the A13 branch for the Pixel 6 Pro but made to work on A12, which brings a lot of improvements all around.
There´s a PMU limiting feature introduced in the A13 kernel. It was imported in the previous 2.4.0 release too and configured to try to reduce heat, reduce the usage of high cpu freqs when it isn´t needed. The explanation can be found in the
release post of 2.4.0.
I went ahead and refined the implementation and usage of that feature again.
Short explanation: The PMU limiter can cut back max cpu freq if the PMU (performance monitoring unit) doesn´t cross a certain threshold. If that threshold is crossed the limit is lifted and the phone is allowed to use peak performance.
While the previous approach restricted the cores just to a single limit of 1,4GHZ/1,6GHZ/2,4GHZ (for little/mid/big cores), the new approach restricts to different limits based on interaction and scenario what´s happening.
That means there are different limits and thresholds for app launches, interaction (tapping the screen, scrolling), display idle (no movement on screen content, nothing interactions with the display, no tapping the screen etc).
If none of the conditions below are met the limits are 1,19GHZ/1,32GHZ/1,42GHZ (for little/mid/big cores) if the performance threshold is not crossed.
During app launches we keep the limit of 1,4GHZ/1,6GHZ/2,4GHZ (for little/mid/big cores) if the performance threshold is not crossed. (that´s useful to not boost too much if an app is already in memory)
During scrolling limits of 1,4GHZ/1,6GHZ/1,8GHZ (for little/mid/big cores) will be set. The reason for that I will explain later.
During idle screen limits of 1,19GHZ/1,0GHZ/1,1GHZ (for little/mid/big cores) will be set if the threshold is not crossed.
If the device really needs max perf, the limits will be crossed and it will also perform to its max. The performance impact by the PMU limiter is minimal to negligible/non-existent.
Uclamp value of top-app tasks, rt-tasks and sf-tasks are raised during interaction. This improves scrolling performance as it biases tasks to start on a mid or big CPU rather than a small one. By restricting the maxfreq of mid and big cores via the PMU limiter during scrolling/interaction we do not generate additional heat by doing that. The threshold was specifically tuned by doing a lot of tracing to achieve not crossing the PMU limit during scrolling. For example gmail scrolls a lot smoother now. Some apps like twitter just need to fix scrolling on their own end.
BFQ improvements from linux-main were backported.
Scheduler updates for pelt, load, tasks placement were backported from linux-main.
LRNG was bumped to V45.
An improved energy model for thermal control is used.
And a huge bunch of additional changes.