[KERNEL][14FEB'12]RedPillKernel_Rev1.3[RedPill Touch CWM Recovery by AF974]"TAKE IT!"

Search This thread


Senior Member
Jun 24, 2009
Any news on the kernel for ics? Back in the gingerbread days this was as good a it gets for me in terms of performance and battery

Sent from my GT-I9100 using XDA


Senior Member
Jan 31, 2008
And still is my friend, still is :p
The team is struggling with real life, we are all waiting patiently that they got some time free to spend for us again :D

Sent at hyperdroid speed from a Galaxy far far away from the others


Aug 24, 2010

Flashed this kernel after flashing TSM.REVAMPED... went into recovery and couldn't do ANYTHING. SD card wouldn't mount for the external or internal so I couldnt even restore my phone... pretty sweet huh.

Top Liked Posts

  • There are no posts matching your filters.
  • 411
    [KERNEL][14FEB'12]RedPillKernel_Rev1.3[RedPill Touch CWM Recovery by AF974]"TAKE IT!"

    "This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill- you stay in Wonderland and I show you how deep the rabbit-hole goes." - Morpheus, The Matrix (Copyright belongs to the Wachowski Brothers... Larry and Andy)Features
    • Initramfs from LA2
    • Samsung kernel-update3 (patched for deep sleep fix)
    • Based on Arighi sources (arighi) + a LOT of patches included by pongster for performance, stability and battery life
    • Custom ClockworkMod Based Recovery v5.0.2.7 by AF974 based on Team Overcome Recovery (thanks to alterbridge and AF974)
    • Instant root (modded script by gokhanmoral of SiyahKernel with a few edits by pongster to ensure latest SU apk and binary are used.)
    • Newest Superuser 3.0 and su binary (thanks to chainsdd)
    • Touchscreenfix set to "3" (vitalij)
    • Init.d support
    • VooDoo Louder Support by supercurio
    • 2nd Core and Touch Move by Tegrak Support
    • SetCPU and Voltage Control Support
    • Full CWM Manager 3.0 Support by Chainfire
    • CPU & GPU Overclocking and Undervolting by Netarchy
    • Highly Experimental Ondemand based CPU Governors (Minor Edits only/Renamed to keep bugs on the experiments) based on arighi's deep_sleep and fast_start commits
    • Maximum CPU Freq set at 1.5Ghz
    • Enable or Disable File Syncing (fsync enabled by default)
    • CFS Autogroup by Mike Galbraith Enabled
    • CPU Topology and Sched_MC enabled
    • AFTR and LPA enabled
    • A lot of tunables via sysfs included
    • Undervolted Int ARM and Touch LED Values (thanks to Phenomenal for the idea)
    • Git Implementation of SHA-1 for 12% faster boot time
    • CPU set at 1.2Ghz at Boot for faster boot time (Thanks to Imoseyon)
    • XZ compressed kernel using optimized values for the size of the kernel
    • Uncompressed Initramfs (tweaked scripts/gen_initramfs.sh)
    • NTFS Read/Write Support for OTG (Flash Drives and External Hard Drives with enough Power supported)
    • CIFS and FUSE Support | Tweaked Ext4 Filesystem
    • SIO | noop | deadline | V(R) (tweaked for better throughput and balanced latency for Mobile NAND based devices)
    • sleepy | hyper | conservative | ondemand CPU Governors
    • generic cpufreq range regulation (arighi) | BLN support (Thanks to creams and neldar) | Fuel Guage Wakelock fix by Entropy512

    Power Saving Features:
    • AFTR + LPA enabled
    • sched_mc enabled
    • ARM CPU Topology enabled
    • CPU Hotplugging OFF when screen off enabled (Thanks to arighi)
    • RCU Fast No HZ enabled
    • Stable Voltage Tweaks for Internal Voltages (not ARM Voltage which remain stock) to help lessen heat when in heavy usage scenarios

    Boot Time Features:
    • Used git Implem of SHA-1 for 12% Boot time improvement
    • Added [PATCH] arm: remove "optimized" SHA1 routines by Linus Torvalds <[email protected]>
    • Added [PATCH] arm: remove stale export of 'sha_transform' Linus Torvalds <[email protected]>
    • Uncompressed initramfs (since initramfs is compressed as part of the kernel image, this is reduced to a copy operation from a decompress then copy one)
    • Set Clockspeed at 1.2Ghz at Boot time to ensure all critical tasks have enough power to perform them while the governors/maxfreq isn't set yet. (Thanks to Imoseyon for this hack)

    CPU Features

    • CPU and GPU OC/UV thanks to netarchy/Hacre

    CPU Governors Included:
    Final Clean up of CPU Governors available for simplicity. (all Governors are tweaked for the best possible balance of battery and performance with a slight lean towards performance) With this focus on simplicity stated earlier, the only governors available are the following:

    • sleepy (ondemand based cpu governor with minor edits by pongster) loves to sleep and idle at the lowest set frequency, hence the name change from "solo" to "sleepy". Its closer to ondemandx in terms of performance. This can be tweaked and tuned using init.d scripts as well.
    • hyper (ondemand + suspend freq setting ability with minor edits by pongster) This was formerly the original kenobi which I renamed to hyper as others may not get the Star Wars Reference. :) It gives a good balance between battery life and performance. Its closer to ondemand in terms of performance. also tunable using init.d scripts.
    • conservative (good battery savings by default due to its slow ramp up and ramp down but tunable for performance) defaults are slightly tweaked for better performance than default conservative.
    • ondemand (old reliable thats been tweaked by arighi to support deep_sleep and fast_start) these features try to detect if the CPU is coming from a deep sleep and is more likely to sleep again and thus limits its frequency to the lowest possible that can handle the operations needed. fast_start checks if the CPU needs more "ooomph" and jumps to the highest frequency faster to enable it to complete the operation the system needs to complete. (like during boot-up)

    3rd Party Kernel Apps Support

    • CWM Manager 3.0 (It works well for me. Its a useful app by Chainfire that extends the features of the current recovery. No need to reinvent the wheel, so to speak)
    • Voodoo Louder by supercurio
    • Voodoo Display (for future supercurio app)
    • 2nd Core by Tegrak
    • Touch Move by Tegrak
    • SetCPU by michaelhuang
    • Voltage Control by xan
    Filesystem Features (loaded by default to prevent the load insmodding at boot will cause, however minor)
    • CIFS
    • FUSE
    • NTFS
    • Experimental NTFS automount for OTG devices (you'll have to do a little more work to enable sdcard as ntfs) (Thanks to gokhan for the hotplug script as base.) This script uses the native NTFS RW support available in t he kernel instead of ntfs-3g
    Ext4 Tweaks from 3.x.x branch:

    [PATCH] ext4: fix ext4_end_io_dio() racing against fsync() from https://lkml.org/lkml/2011/12/16/311 *Reported-by: Kent Overstreet <[email protected]>
    *Signed-off-by: "Theodore Ts'o" <[email protected]>
    [PATCH] ext4: avoid hangs in ext4_da_should_update_i_disksize() from https://lkml.org/lkml/2011/12/16/344 *Signed-off-by: Andrea Arcangeli <[email protected]>
    *Signed-off-by: "Theodore Ts'o" <[email protected]>

    I/O Schedulers
    • SIO (2012 0.2 version)
    • deadline (tweaked for Flash)
    • noop
    • V(R)
    Performance Patches

    Mike Galbraith's Ultimate CFS Performance Patch (CFS Autogroup)<[email protected]> as ported by faux123 <[email protected]> for 2.6.35 kernels. I (sarcastillo <[email protected]>) additionally edited some things in sched.c to make it compile properly for Samsung Sourced kernels*More info on this here: https://lkml.org/lkml/2010/11/20/91

    Added the CGroup Patch:*Added [PATCH] cgroup: Provides a way of tasks grouping by timer slack value by Kirill A. Shutemov <[email protected]> Based on patch by Jacob Pan. Introduces per cgroup timer slack value which will override the default timer slack value once a task is attached to a cgroup. It's useful in mobile devices where certain background apps are attached to a cgroup and minimum wakeups are desired.

    Miscellaneous Patches
    • Added [PATCH] cpu-hotplug: Add the function 'cpu_hotplug_inprogress' by Maya Spivak <[email protected]>
    • Added [PATCH] printk: Don't allow cpu to get console lock during hotplugging by Maya Spivak <[email protected]>
    • Added [PATCH] rcu-tree: Check for extended quiescent state at start of gp by Maya Spivak <[email protected]>
    • Added [PATCH] sched: Do not block when waiting to free old root domain by Maya Spivak <[email protected]>
    • Enabled fsync disabled (can be disabled by doing an echo "1" > /sys/module/sync/parameters/fsync_disabled in a terminal emulator or as a script for gscript or scriptmanager)
    • Touchscreen fix set to "3" for more responsiveness during games, etc. (Thanks to vitalij)

    Custom CWM Recovery made by af974 (Huge props to him!) based on Team Overcome Recovery (Huge props to them!)
    • Enabled back key
    • Enabled Power button to select (less chance of double pressing the Home Button and format sdcard fro some users)
    • Reorganized, Inutitive layout and more Readable menu
    • No/Yes Selection Tweak (If you know how to get to Recovery, you don't need that many "No's")
    • Mount Internal AND Mount External from Recovery (We figured this would be quite Useful)
    RedPill Download Links:
    Download TAR

    Download CWM ZIP
    Disclaimer: I made this for my personal use and has been personally tested by me and my team (HyperDroid Dev Team). While it may work for other i9100 International ROM's, we have not tested it personally. You have the liberty to choose to use this Rooted Kernel and by flashing this Kernel you will have surrendered your right to complain that you lost your Warranty. If you're smart enough to figure out WHY you need a Custom Rooted Kernel, you SHOULD be smart enough to undo it if you need your device serviced officially. If your device explodes, melts or otherwise disintegrates from its awesomeness I shall NOT be held responsible.

    Reposting the Kernel: Please don't repost this kernel anywhere else. Keep the download links intact as I have taken the effort to provide fast links for everyone. If you can't understand English well enough and feel the need to re-post this kernel on a foreign language web site or forum, please let me know first and link to this page... (Google Translate can make it easier to read in your Native Language)

    Credits: (Huge props to all the devs I've learned from by reading and studying their code)

    Team Overcome
    All the hardworking Kernel Devs at lkml.org (Linus Torvalds, Jens Axboe, Mike Galbraith, etc.)

    Special Mention to the following:
    To my mates at the HyperDroid Dev Team: (who help me test and refine the features of our kernel for our ROM)

    Arighi (for the initial guidance on how to get the kernel booting and working & a lot of battery driven patches)
    D.O.C. (formerly doctorcete) (for the friendship and being an example of diplomacy in dealing with usual ****storm of questions from users who refuse to search and read) :)
    AF974 (for the Overcome based Recovery that's so bad ass I want to stay in recovery)
    petsasj (for his great work on HyperDroidParts and all future Apps that are just pure awesomesauce!)
    sicopat (for letting us use his server and helping us out with a lot of things smali)
    s2d4 (for testing everything at the risk of the potentially time sucking Soft Brick...)

    Kernel Source: https://bitbucket.org/sarcastillo/ultimate-kernel-sgs2
    MatrixPills Image by Corinne Wilger. Visit her site HERE.
    RedPill Touch Recovery Changelog:

    -Based on new CWM made for ICS
    -Usual custom layout as previous release, custom images (thanks to Pongster)
    -New menus layout:
    Reboot menu= reboot to system,recovery and power off
    Install menu= choose from internal or external sdcard
    wipe menu= wipe data/factory res, wipe cache, wipoe voltage settings(it wipes voltage control script), wipe battery stats.
    backup and restore= backup either on internal or external sdcard, restore and advanced restore to the same way.
    storage menu= mount/unmount partitions, mount internal or external sdcard
    Touch button on screen
    Since the touch feature, we have again 7 no and one yes.
    Touch buttons layout(from left to right) : BACK-UP-DOWN-SELECT
    Battery percent
    Battery charge while in recovery.

    Thor2002ro for all his help, i've stressed him along via pm and for porting ICS recovery compatible with gingerbread
    DoomLord for the inspiration
    Sztupy...nice and helpful guy
    Koush for his wonderfull work on recovery
    Linux even if recovery doesn't have linux code inside
    All Hyperdroid team
    XDA Developers
    CyanoGenMod Team
    Alterbridge and Overcome team for their work on the Galaxy Tab recovery

    Uploaded with ImageShack.us

    HyperDroid RedPill Recovery ChangeLog:

    -New custom layout, red color text, custom images (thanks to Pongster)
    -New menus layout:
    Reboot menu= reboot to system,recovery or download
    Install menu= choose from internal or external sdcard
    wipe menu= wipe data/factory res, wipe cache, wipoe voltage settings(it wipes voltage control script), wipe battery stats.
    backup and restore= backup either on internal or external sdcard, restore and advanced restore to the same way.
    storage menu= mount/unmount partitions, mount internal or external sdcard
    back softkey is set to back.
    power and menu are set to select.



    Thanks to D.O.C (alias doctorcete, alias King) for screenshots
    Kernel Changelog

    Red Pill Kernel
    • Added Newest RedPill CWM Based Recovery by AF974 (Touch Enabled with Battery % and Charging in Recovery) (Huge props to AF974)
    • Experimental: USB Audio support for DAC devices
    • Change Back to SLQB for slightly better performance
    • Removed Net Scheduling/Traffic Shaping via Stochastic Fair Blue Scheduler as this may be causing network issues for some users
    • Added HFS and HFS+ Support
    • Added back V(R) but tweaked it to prevent aliased requests from starving other I/O as well (Thanks to franciscofranco for the idea)
    • Update SIO I/O scheduler to 2012 version by Miguel Boton
    • Tweaked CPU Freq hyper sampling rate
    • Added Patch ARM: improve compiler’s ability to optimize page tables by Russel King
    • Added Patch wakelocks: Allow independent debugging of wake_lock_destroy() (Thanks to Entropy512)
    • Experimental: Updated Wireless Driver from EL29 Source… (Thanks to gokhanmoral for these files that are “cherry-picked” from his repo) If users report a lot of the dreaded wlan wakelocks, I can easily revert to the stock update3 sources… This is an attempt to solve WiFi problems some are having.

    • Tweaked tweaks.sh file based on additional information learned and tested recently. (VM System Reading by s2d4 found <a title="Android VM System: Understanding It a Little More" href="http://goo.gl/bQgU0">here</a>)
    • Reduced number of available governors based on my personal testing... the 4 remaining should serve the needs of those looking for performance, battery life or anything in between.
    • Removed some more stuff no one used in the defconfig.
    • Release LA2 based initramfs version as stable (and make AOSP Support Unstable as we don't test that in GB)
    • Tweaked mount options for ext4 (extended Commit time to 30 and fall in line with the VM System tweaks implemented)
    • Change from SLQB to SLUB for a little less overhead (vs. a queued allocator) More info on SLUB here: http://lwn.net/Articles/229984/
    • Tweaked values in deadline and SIO I/O scheduler to give better throughput while attemting to keep a similar latency to the original (if not more aggressive) Based on my initial (indicative, not conclusive... yet) testing, having these in line with the vm dirty, expire, writeback values + ext4 commit=30 + laptop mode to "schedule" write outs to NAND based storage works quite well to balance throughput with latency expected in a mobile device. We took the big picture view instead of copy pasting random "known" good values and challenged some assumptions even we had at the start. The result is a mobile device tuned for good throughput and battery life with above average latency (not the lowest latency out there, but given the benefits of better I/O throughput and potential battery savings + extending the lifetime of NAND Based storage I think it was a compromise worth taking)
    • Remove V(R) and BFQv3r1 scheduler as the tweaked deadline, SIO and noop are the best we've tested for NAND filled mobile devices. (More on this later)
    • Added franciscofranco's deadline tweak that "Prevent aliased requests from starving other I/O"
    • Set deadline as default I/O scheduler
    • Tweaked deadline i/o fifo_batch for better throughput
    • Remove set_need_resched from rcutree.c based on https://github.com/drod2169/KangBang-OMAP/commit/717e7a22e42869418084701455c11e690a993fe8 which says:*"if we really are in an interrupt, the attempt to re-enter dyntick-idle mode will invoke*rcu_needs_cpu() in any case, which will force the check for RCU callbacks.*So this commit removes the check along with the set_need_resched()"
    • Experimental BTHID fix based on latest bthid.c from Samsung Source Releases I found on github (EK02 for Epic Touch 4G Released in December 2011... about 2 months after Update3 Sources were released for the i9100 and about the same time "BTHID broke" reports began coming in.) (Thanks to TDR for the source where I found this fix)

    • Adjusted Int Voltage of ARM and Busfreq to Stable Values across several devices
    • Added Imoseyon's suspend code to hyper and sleepy
    • Adjusted Touch Screen Values back to default (Thanks to Entropy for pointing this out)
    • Lowered Touch LED Values lower to dim the LED's a bit more.
    • Added Some Tweaks in the init.rc so they can be set from there and are consistent for anyone who uses the kernel.
    • Added some experimental compiler optimizations (Haven't noticed much difference, but we'll continue testing)
    • Enabled deep_sleep and fast_start by default in ondemand, hyper and sleepy
    • Added backported Conservative governor from 3.2

    RedPillKernel_Rev1.0 (Final Rebrand to highlight the Power of Choice... formerly known as HyperKernel or HDK all older changelogs and commits since Update 3 are included)

    • Custom CWM Recovery made by af974 (Huge props to him!) based on Team Overcome Recovery (Huge props to them!)

      -Enabled back key
      -Enabled Power button to select (less chance of double pressing the Home Button and format sdcard fro some users)
      -Reorganized, Inutitive layout and more Readable menu
      -No/Yes Selection Tweak (If you know how to get to Recovery, you don't need that many "No's")
      -Mount Internal AND Mount External from Recovery (We figured this would be quite Useful)
    • Tweaked NTFS automount script to support RW and use native ntfs built in the kernel instead of ntfs-3g (like stock kernel)
    • Adjusted Max CPU Freq to 1.5Ghz since its more stable then being at 1.6Ghz for those who like to OC
    • Fixed Bluetooth Devices not connecting properly because of the module not loading properly
    • Stripped the kernel modules used to bring the kernel size down a little more
    • Added Tegrak's Home Button Key Tweak (Thanks Tegrak)
    • Added Stochastic Fair Blue net scheduler (SFB)
    • Added [PATCH] lib/sha1: use the git implementation of SHA-1 by Mandeep Singh Baines <[email protected]> to improve boot performance by almost 12%
    • Added [PATCH] arm: remove "optimized" SHA1 routines by Linus Torvalds <[email protected]>
    • Added [PATCH] arm: remove stale export of 'sha_transform' Linus Torvalds <[email protected]>
    • Added ARM: 6941/1: cache: ensure MVA is cacheline aligned in flush_kern_dcache_area found here https://lkml.org/lkml/2011/6/16/174
    • Added ARM_ERRATA_754322 & ARM_ERRATA_754327
    • Tweaked the Tweaks File with more Tweaks so the Tweakers who like to Tweak can stop Tweaking as its Tweaked by default and No other Tweaks are needed to Tweak it even further. Any more Tweaking brings you to the law of diminishing returns... (you get the point so I'll stop there...) :D
    • Set Clockspeed at 1.2Ghz at Boot time to ensure all critical tasks have enough power to perform them while the governors/maxfreq isn't set yet. (Thanks to Imoseyon for this hack)
    • Add back default sampling_down_factor for Sleepy CPU Governor
    • Added [PATCH] mach-s5pv310: Make cpuidle AFTR entry less chatty by Entropy512 <[email protected]>
    • Added various clocksource patches from lkml.org (check the commit log for details)
    The team and I have decided to close the thread while we decide whether its still worth our time and effort to share what we make for ourselves to others, given that the simple requests of politeness (which should be inherent in every one using something for free and freely shared) and common sense have been replaced by users looking for a quick fix and have turned this thread from a DEVELOPMENT focused thread to a GENERAL SUPPORT thread... which it IS NOT...

    Don't underestimate the power of attitude... I've seen people removed from this community because of a rotten attitude... Remember that this is a DEVELOPMENT community... hence the name xda-developers.com You want to be held by the hand as you tweak your new phone so you can show everyone else how "cool" you are? GET OUT and STAY OUT!


    Lastly, some other "devs" have been kanging our work without even a credit or link back given to the team who has worked hard to make sure it works for us. While we have been encouraging sharing as long as credit is given... it seems most new "devs" prefer taking credit then giving it and have made anything we share on our thread look like they "made or wrote" it. Sharing needs to be a two-way street. Don't just keep on taking... that's not what XDA is about.

    While they say that "All good things must come to an end..." this isn't the end... not yet...
    Kernel Frequently Asked & Answered Questions (FAAAQ)

    Where is the source for building this Kernel?
    You can find the source HERE. I love GPL and We should all support Open Source Software and its Developers. Please Note that Open Source doesn't mean all of this magically wrote and patched itself... it takes a lot of our FREE time to do this and would appreciate if you let us know how you've improved the code.If you know what you're doing, you can easily build your own kernel too. *Please let me know if you have any improvements you feel should be included and send me a pull request. *If it tests okay, it may be included in the next release.

    Does the RedPill support AOSP/MIUI/CM7 ROMs for i9100?
    As of Rev1.3, I will not be working to making it work on AOSP/MIUI/CM7 as I only have enough time to test and maintain 1 build. When the ICS sources come out, I may have to make it support it again as the team may release an AOSP based ICS as well.

    Why doesn’t the RedPill have high benchmarks?*
    That’s done on purpose to keep YOU away. Seriously. The way the VM system is tweaked (dirty ratio’s, minfree values, etc.) + the focus on better throughput in any type of load + prioritizing data integrity by turning on fsync + a lot of other small tweaks all lead to good performance and battery drain in actual use (I like using my device and not keep it sleeping to bloat my battery stats, thank you). This may not give you the benchmark scores you want to be able to show off… which is good since it means YOU stay away from this kernel and continue to rely on benchmarks rather than actual usage.

    Does the RedPill support other variants of the i9100 (like i9100g or i777)?
    No. It supports only the i9100 International Version. *If you use it successfully on other i9100 variants, please let me know so I can update this page.

    Is the Kernel Undervolted by default?
    ARM Voltages are stock. Int Voltages and Busfreq Voltages are conservatively UV'd as seen in the source below...

    CPU: L0=1500, L7=100
            .index                   = L0,
            .arm_volt     = 1450000,
            .int_volt       = 1100000,
            .index             = L1,
            .arm_volt    = 1300000,
            .int_volt    = 1100000,
            .index        = L2,
            .arm_volt    = 1300000,
            .int_volt    = 1050000,
            .index        = L3,
            .arm_volt    = 1200000,
            .int_volt    = 1050000,
            .index        = L4,
            .arm_volt    = 1100000,
            .int_volt    = 1050000,
            .index        = L5,
            .arm_volt    = 1000000,
            .int_volt    = 975000,
            .index        = L6,
            .arm_volt    = 975000,
            .int_volt    = 950000,
            .index        = L7,
            .arm_volt    = 950000,
            .int_volt    = 925000,
    {LV_0, 400000, 1000000},
          {LV_1, 267000, 975000},
              {LV_2, 133000, 975000},
    Why a tweaked deadline I/O scheduler?
    The deadline I/O scheduler by Jens Axboe has proven itself as a low overhead, high throughput and acceptable latency I/O scheduler. *When tweaked for NAND based Mobile devices, it does even better. *While it "starves" writes by default with a 2:1 Read:Write ratio, this can easily be tuned via sysfs.

    Why is my favorite governor (whichever it is) not available?
    Simplicity is the Ultimate Sophistication, as Leonardo Da Vinci eloquently said. *Based on extensive testing and user feedback, we gathered that these 4 governors included gave the best performance and battery life on our device. Simple choice to have only the best ones available based on actual testing and feedback. *You will also note that I removed lulzactive and any interactive based governor. This was done after I realized that I was tweaking lulzactive, for example, to behave like governors that do the job perfectly already sans the sleep profile. *What I mean is setting a pump up step of 4 and tweaking other factors such as sampling rate and sample time along with cpu_load (inc and dec) made it behave like ondemand with a sleep profile... *I like it simple so I just included the tweaked and optimized ondemand with sleep profile instead. *You can also make lulz behave like conservative, so I included conservative in there. lulzactive is a tweakers dream... but those who like to keep it simple may find it takes time to configure correctly. *I included only these governors so you all have a simple choice to make in finding your favorite one. *These are all tunable via sysfs so you can skew it towards battery or performance based on what is important for you. *Don't expect uber smoothness and 6 hours screen-on time though... *there will be compromises when leaning towards any of the two factors most users consider important in a kernel.

    What are the sleepy and hyper governors?**Experimental CPU Governors
    (In order to keep all bugs properly attributed to my experiments and not the original author's, I have renamed it accordingly.)
    • sleepy (formerly know as solo) is an attempt to balance performance and battery life. Its based on the tweaked ondemand by arighi and is optimized for the SGS2. It includes imoseyon's ondemandx tweaks with some down_sampling and other features that users can set by echo'ing into sysfs. Sleepy is closer to ondemandx in behavior when in action.

      It also features arighi's fast_start and deep_sleep detection features. It also suspends at 500Mhz.
    • hyper (formerly known as kenobi) is an aggressively smart and smooth tweaked and optimized for the SGS2 based on ondemand as tweaked by arighi with some ondemandx suspend features from imoseyon. (Added setting suspend_freq via sysfs and Imoseyon's Suspend Code) Hyper is closer to ondemand in behavior when in action.

      It features arighi's fast_start and deep_sleep detection features. It also suspends at 500Mhz.

    What is arighi's deep_sleep detection?
    From arighi's description on the*<a title="deep_sleep commit" href="https://github.com/arighi/linux-gt-i9100/commit/719732552357f66b11f8c972575b440a8f97d64b">actual commit here:</a>

    deep sleep detection via low-power idle notifier
    Implement a deep sleep detection mechanism using a low-power idle*notifier introduced in 9487d11.

    A new parameter is provided in the ondemand cpufreq governor and*exported in sysfs:

    The deep sleep detection is implemented using the following heuristic.
    When deep sleep detection is enabled (deep_sleep = 1) if we detect that*the previous low-power idle state was more than 4x the sampling rate, it*means that we're probably going to enter to a deep sleep state or we're*just resuming from a deep sleep.

    In both cases we completely ignore the cpu activity (considering it to*the minimum load), because probably there's a big chance to get back to*the deep sleep soon. If it happens, with this heuristic, the cpu will*enter the deep sleep state at the minimum frequency, that is good for*saving battery life.

    What is arighi's fast_start detection?
    From arighi's description on the <a title="fast_start commit" href="https://github.com/arighi/linux-gt-i9100/commit/df47f443192c3806277db6aed257421e33c4036f">actual commit here:</a>

    fast start detection via low-power idle notifier
    Implement a heuristic to detect interactive usage of the device and*boost the cpu frequency to the max.

    A new parameter is provided in the ondemand cpufreq governor and*exported in sysfs:

    The fast start detection is implemented using the following heuristic.
    If in the last 4 samples the cpu never entered in low-power idle state,*probably the cpu is very busy. In this case we jump to the maximum frequency immediately.

    Why SLQB? (According to its author, Nick Piggin)*
    ”SLQB is a slab allocator that focuses on per-CPU scaling, and good performance with order-0 allocations. Fastpaths emphasis is placed on local allocaiton and freeing, but with a secondary goal of good remote freeing (freeing on another CPU from that which allocated).”

    Why XZ Compression for the Kernel?
    Its about 30% smaller and decompresses at just half the speed of gzip... I decided to use it as we have a lot of ram and raw cpu power that can easily handle the extra load xz compressed kernels

    XZ compression is set to compress at -9 instead of the default -6 (since XZ decompresses faster when the archive is larger) delivers more performance since in kernel land you don't need to worry about compressing anything back to XZ, these gains in size were enough of a trade-off instead of using gzip by default. (Technically, gzip compressed kernels and initramfs are faster than any other compression method... but for our device we have a lot of raw CPU power and a lot of RAM) (more here http://tukaani.org/xz/)

    Why ARM Topology and sched_mc?*(From linaro.org)
    "The sched_mc function adds a power saving awareness to the Linux scheduler which is tuned for performance by default. When sched_mc is enabled, the scheduler tries to gather the running processes in a minimal number of cpus and clusters. This choice of the location of a process is done thanks to the cpu topology function which describes the affinity between cpus."
    (more info here: https://wiki.linaro.org/WorkingGroups/PowerManagement/Specs/sched_mc)

    Why RCU Fast No HZ?
    "This option causes RCU to attempt to accelerate grace periods in order to allow CPUs to enter dynticks-idle state more quickly. On the other hand, this option increases the overhead of the dynticks-idle checking, particularly on systems with large numbers of CPUs." The power savings generated from using this, in my experience, outweigh the additional minimal overhead in checking dynticks-idle."

    Why rename some modded CPU governors?
    I chose to rename tweaked/edited governors as there may be bugs that I inadvertently add with my experiments and would like all these bugs to be properly documented as being introduced by myself. (Personally, it would be worse for me to introduce a bug in a current mainline CPU Governor with my experiments as I'm still learning about tweaking and making changes at this level... and from how I live my life, experience is the best teacher)

    Ondemand, for example, is an old reliable and putting all the features I want in there will change the performance I have come to expect from it. I don't expect ondemand to have a sleep/suspend profile for example. So editing/tweaking/optimizing a governor and renaming is the way forward for me. I want to select "ondemand" and know that it will behave like it does in all my devices... reliably handling the load at the expense of battery life.(smoothness above all)

    Where do I report Issues or Get Community Support?
    Head over to the <a title="Official Kernel Release Thread" href="http://androidmeda.com/forum/index.php?topic=47.0">Androidmeda Forums Kernel release thread</a> or <a title="XDA Kernel Release Thread" href="http://forum.xda-developers.com/showthread.php?t=1288850">XDA Kernel release thread</a> to get support from fellow RedPill Users. *Make sure you included a dmesg or last_kmsg by following <a title="How To File Useful Bug Reports in Android" href="http://androidmeda.com/forum/index.php/topic,12.0.html">my guide on filing Bug Reports here.</a>

    How do I show my appreciation? Can I donate to you?
    You can show your appreciation concretely in several ways:
    • Pressing the "Thanks" Button on XDA
    • Signing Up to the Androidmeda Forums and Pressing the "Super Thanks" Button there
    • Report issues politely and completely
    • Donating any amount is completely up to you. *I look at donations as a "tip" for a job well done, rather than a "wage" or a "bounty" to get things done. *And Tipping is always up to you... the tipper. *I won't stop development if you don't donate, that's for sure, as I do this mainly for myself and my HyperDroid mates to begin with. I make more money running my own business than this hobby so “tips” are not a necessity… it just tells me how many people actually find the work useful enough to say thank you via a financial gesture.

      This Kernel will ALWAYS be FREE to Download and USE, even if the time spent making it IS NOT FREE. *That's Open Source. (The time people spend on open source projects could have been used to spend more time with their families, for example. But the Devs commitment to get something done right is almost always tugging at him to Dev just a little bit more) *:)

    *I've personally donated to Devs who've done things I would never have been able to figure out at the time they did figure stuff out. *Learning anything new takes time and time, in my book, is more important than money as I can't turn back time, while I can always earn money. SO I donate to Devs who spend their free time making Stuff better and easier for those of us who haven't figured out how to get it done.