[Samsung Galaxy A51 ROMs, Kernels, Recoveries, & Ot] Adolf24@:
View attachment 6049454

#include <std_disclaimer.h>

/*

* 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 ROM/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.

*/

About the core:

The kernel is based on the standard Grass configuration and contains custom kernel-specific features.

Features:

GPU​

*Gpu Add Multiplier for Timeout Limits Adds TICK_MULTIPLIER that multiplies across multiple timeout values. This can be configured so that slower systems (such as emulation) can be used.

*Gpu Add adaptive power policy

Adds a new 'adaptive' power policy based on 'coarse_demand'.

The main difference is that while coarse_demand has a static value

shutdown hysteresis (i.e. the amount of time after the GPU

becomes idle (the platform's idle callback is performed), adaptive

scale this up and down depending on workload.

*Add GPU sustainable frequency

Avoid excessive thermal throttling on stock DVFS during gaming. This frequency, has been tested, giving the best thermal stability

*DFVS Gpu_dvfs_clock_lock

This remove GPU max freq lock.

No more drop max GPU freq to 377MHz.

OTHERS​

*CRC disabled and CRC configurable

* Optimized console FrameBuffer

*Optimized SLUB memory allocator

*Improve sqrt speed

*Reduce the size of the non-large page block to reduce scheduling delays.

*Added a Wireguard driver, an open source VPN driver in the kernel.

CPU​

*Optimize CPU select_idle_core()

Currently we log all threads of a core to evaluate whether the core is idle or not. This is unnecessary. If a thread on a core is not idle, skip evaluating other threads on a core.

*Cpu searches for a task from the end of the queue. As a first step, this patch causes cfs_tasks to be listed as MRU.Significa que cuando se elige una siguiente tarea para ejecutarla eficientemente

*Disable SLUB partial per-CPU caches. This causes load spikes when the partial caches per CPU are full and need to be flushed, which is bad for maintaining low latency.

*Remove CPUFreq timing controller:

Ignoring its colorful past full of memory leaks, the CPUFreq times driver is absolutely horrible for several reasons. First, it allocates and reallocates memory directly from the scheduler tick with IRQs disabled, which is not only bad for latency but is also prohibited in RT. Second, statistics are simply not that useful because they are calculated pointlessly: a process is assumed to have been running at the same CPU frequency for the entire time (and that frequency is just the current frequency at the time of the tick) , the power consumed throughout the jiffy is attributed to whatever unlucky process is running at the time of the scheduler tick, the UID that owns the process is blamed for the fact that other CPUs in the cluster are not idle (without any basis for this), and it is assumed that there is a strong variation between the frequency of a CPU and the energy consumed by the process (when there is not, at least because all CPUs in a cluster share the same clock source, which means a high load on any CPU in a cluster will cause all CPUs in the cluster to run at a higher frequency).

*Optimize CPU power calculation algorithm For more effective power-aware placement, take schedutil's tipping pointteniendo en cuenta la capacidad y potencia necesarias

*I always try to find energy efficient CPUs.

*Add CPU Boost driver Port Razer phone, Since this driver enforces the boost by hooking into standard cpufreq ADJUST notifiers, it has several advantages:

More portable across kernel versions where the cpufreq internals might

have been rewritten.

Governor agnostic and hence works with multiple governors like

conservative, ondemand, interactive, etc.

Does not affect the sampling period/logic of existing governors.

Can have the boost period adjusted independent of governor sampling period.

*Don't hog CPU and zone locking in rmqueue_bulk() With this change, rmqueue_bulk() no longer appears as a serious offender in the preemption tracker and system latency is noticeably improved.

CUSTOM DTB​

Custom Device tree blob

*Tweak rate limits on the big cores

*Shorten down rate limit on the little cores, This should allow the little cores to scale a bit better between tasks (especially since a lot of them happen on the little cores for efficiency) by having its scale down limits shorter than the big cores.

*DTS Exynos: Re-adjust variable frequency boosting (freqvar-boost) (Backport) Now that upstream patches and improvements to the scheduler have been applied, it's also important to address the variable frequency scaling the kernel does. Also known as 'freqvar-tune', it adjusts the CPU frequency by inflating the reported utilization to both schedutil (upscale_ratio_table) and schedtune (boost_table), making the CPU boost to higher frequencies. This can be treated as some sort of "wiggle room" just in case a task suddenly adds a significant amount of load.

Based on device testing with the current boosting values, there is aggressive high-frequency scaling on the little cores as well as measly frequency scaling on the big cores. Not only does this cause performance issues, it's also troublesome for battery life.

*Freqvar-tune Adapt to new changes to EMS Adapt the platform's 'freqvar-tuner' tables based on the new changes to the Exynos Mobile Scheduler on this tree

*Tweak 'ontime migration' tunables

*Re-adjust FRT ratios

*Only set one CPU in the default IRQ affinity mask

*Don't allow IRQ affinity masks to have more than one CPU

*Tune MIF utilization

*Add UC 728Mhz big frecuencia

*BACKPORT Sched ems: freqvar-tune: Import from the Exynos 1280 Import a newer version of freqvar-tune used by Samsung on the Exynos 1280. There's also freqvar-tune for the CPUs' idle states but (a) it's actually incomplete and is unused and (b) used on platforms with seemingly more advanced idle (which the 9611 doesn't have),Pulled from the Galaxy A53 Android 13 sources and adapted to current kernel source state.

*Disable modem debugging

*Reserved Memory reduced Stock 555Mb to 533Mb

Instalation:

Boot the device into Twrp recovery.

Backup your current kernel inside Twrp

Download the zip

Restart the device

If you like my work, like this post, it's free : )

Credits:

@roynatech for his incredible work on the exynos 9611​

@Adolf24and to me for dedicating time to this kernel for the a51 community, although I no longer have the device it gives me a lot of inspiration

XDA :DevDB Information

Kernel AxynGrass for SAMSUNG A51

Source code: https://github.com/jesus32004057/Kernel-Exynos-9611

Dowloand: https://github.com/jesus32004057/Kernel-Exynos-9611/releases/tag/AxynGrass

Version Information

State: Estable

Last update 09/08/2023