...AX Developers Present...
...In association with Team Inferno...
"Self determination is NOT a malfunction" -Harkness (Android A3-21)
This kernel is experimental. All patches used, source code, etc. can be found here with as many of the original authors intact as possible.
***ONLY RECENT (aka inline with CMs display drivers) AOSP-BASED ROMS SUPPORTED***
- based off of Cyanogenmod's 3.4.y kernelBUG REPORTS:
- compiled using Sourcery CodeBench Lite GCC 4.7 toolchain (-Os)
- floating-point & graphite loop optimizations
- cleaned up some modules and debugging
- Tweaked GPIO debounce timing [Increased vol. long press]
- Increased touchscreen sensitivity
- dkp notification/backlight LED fade animations (DecimalMan)
- faux sound support
- patches from a plethora of sources (including franciscofranco, WillDeacon, ConKolihas, etc.)
- fast charge capable (imoseyon)
- UV capable (faux123)
- full sched-deadline implementation (jlelli)
- semaphore n4's conservative & ondemand driver (stratosk)
- Power efficient workqueues (Linaro)
- Plenty of backports from mainline [sched, cpuidle, random, smp, etc.] (Linux)
- asm-generic rwsem (Will Deacon)
- Imports from Motorola's msm kernel source:
* always update vfp_current_hw_state when forcing reloading
* fixup to allow sched to play nice with CPU_HOTPLUG
* Krait memutils
* acpuclock-krait: init to max speed (improve boot time)
* lmk/compaction: updates to allow improved/stricter memory management
- I'll add more as I remember
Please include a kmsg/dmesg to any bug reports: http://code.google.com/p/tegraowners...ow_to_get_logs
If you you are unable to do so for whatever reason, try to use as much detail as possible and give me a way to replicate it, so that I may attempt to log it. Thanks!
- Reserved for notes about bugs.
- Cleared since we seem to be golden with trickstermod and I have yet to have a recent cm build fail on init. Let me know if you find anything.
Not to be confused with the iosched deadline, Sched_deadline is a scheduling class that implements a real-time CPU scheduling algorithm; EDF (Earliest Deadline First), augmented with a bandwidth isolation mechanism (called Constant Bandwidth Server, CBS) that makes it possible to isolate the behaviour of tasks between each other. SCHED_DEADLINE allows the CPU to reserve a portion of the CPU time to a specific application very accurately. A key feature is that it ensures "temporal isolation", which means that the temporal behavior of each task (i.e., its ability to meet its deadlines) is not affected by the behavior of any other task in the system. In other words, even if a task misbehaves, it is not able to exploit larger execution times than the amount it has been allocated. When a task tries to execute more than its budget, it is slowed down, by stopping it until the time instant of its next deadline. When, at that time, it is made runnable again, its budget is refilled and a new deadline is computed.
POWER EFFICIENT WORKQUEUES:
With per-cpu workqueues, the scheduler considers a CPU idle if it doesn't have any task to execute and tries to keep idle cores idle to conserve power; however, for example, a per-cpu work item scheduled from an interrupt handler on an idle CPU will force the scheduler to excute the work item on that CPU breaking the idleness. Power efficient workqueues are allowed to be unbound, meaning they are not forced to queue up on what could be an idle CPU; instead, the scheduler allows work to be rescheduled on a core that is already awake.
SEMAPHORE ONDEMAND TUNABLES:
touch_load: the simulated load when there is a touch on screen (default 75)
touch_load_threshold: over this load the touch_load will be applied (default 10)
touch_load_duration: the duration of the simulated load in msec (default 1100)
What CPU do you have? Nominal, Fast ...or Slow
The phones with the lower default voltage values use the "fast" frequency table, consider yourself lucky. This explains why some can't UV as much as others since they are starting with lower mV's to start. These are built in factory tolerances that depend upon the binning of your chip. Hopefully folks don't go freaking out because they have a nominal chip like I do. It's probably good for a dev to have a nominal chip so we can better honor the limits.
How do I tell what I have?
If you boot up your phone fresh and look at the dmesg output (kernel log) while the messages are still there, you will find one of the following output messages where it selects it's frequency plan depending on the binning of the chip.
adb shell dmesg | grep PVS
(acpuclk-krait in our kernel defines PVS as id numbers)
acpuclk-8960: ACPU PVS: 0 = Slow
acpuclk-8960: ACPU PVS: 1 = Nominal
acpuclk-8960: ACPU PVS: 3 = Fast
- thanks to _motley for this awesome write-up on his kernel/kernel features... and for providing explicit detail on his works
A Note for Developers:
CODEBENCH COMPILE CACHING:
Ccache is commonly used to reduce compile times for C-related files. CodeBench's toolchains utilize their very own compile caching that works EXTREMELY well. You MUST be on at least the 5-23 version of CodeBench (CodeBench Lite can be found here). The related patch for using this feature will be posted below. Examples of use are in the commit message.
Basic CS cache patch
Please pull request any improvements/post discussion.
I'll add more info about key features as I work along.
!! NOTE: this OP no longer reflects what this kernel is. See the URL above for the latest. !!
Juri Lelli (and everyone else in the SCHED_DEADLINE project)
Will Deacon (ARM)
and countless others (may they be remembered on github)