I am posting the kernel here so that I can return at least a small part of what I have received from the open source community. I thought the amount of time I have spent for MiRaGe could be useful for others as well. In short, take it if you want it, leave it if you don't. But comments, suggestions are always welcome.
There are several custom ROMs in this forum and they can be incompatible with a different kernel. If you are running a custom ROM please use the kernel that the ROM developer recommends. If you know what you are doing and don't need hand holding, you will do what you want anyway.
- separate builds for stock HTC/Sense ICS ROM and AOSP JB ROMs
- based on the latest HTC official source
- updated to current Linux 3.0 patch level - some of the most irrelevant commits for shooter board were omitted
- added cifs, tun modules
- enabled usb otg and added otg-wakelock
- enabled autogroup scheduler option in CFS to improve interactive responsiveness
- compiled with gcc 4.7.4 Linaro toolchain with -O2 optimization
- CPU clocked at default 1.512 GHz, enabled higher overclock up to 1.7 GHz
- 3D GPU overclock to 320 MHz, added 160 MHz low frequency to save battery
- 2D GPU overclock to 266 MHz, added 160 MHz low frequency to save battery
- smoothed voltage curve to increase stability and added CPU voltage table for user control
- added 467 MHz bus speed to support 1.6 and 1.7 CPU frequencies
- decreased the number of frequency steps using 108 MHz steps to increase efficiency of interactive governor
- enabled cpu stats
- backported staging/android drivers and updates from Google android-3.0 and 3.4 kernels
- backported many msm/kgsl (a220) driver updates from CAF msm-3.4 and removed the unnecessary a3xx part of the driver
- upgraded msm/qdsp6 sound driver to v3 from v2 from CM htc_msm8660 kernel
- backported many ARM optimizations/updates/fixes from Linux 3.8 and CAF msm kernels
- backported latest interactive cpu governor from Google android-3.4 kernel, set as default
- backported ondemand governor from CAF msm-3.4 kernel
- removed unnecessary cpu governors - governors available: <interactive>, ondemand, performance, powersave
- backported latest ROW I/O scheduler from CAF msm-3.4 kernel
- removed unnecessary i/o schedulers - schedulers available: <row>, noop, ondemand
- backported bcm4329 wifi drivers from CAF msm-3.0 kernel, enabled AP_ONLY for WiFi tethering
- backported bcmdhd wifi driver from CAF jb_chocolate for JB kernel
- backported workqueue from Linux 3.6 to enhance the hotplug performance of kernel-based mpdecision
- backported rwsem from Linux 3.11
- completely revised kernel-based msm_mpdecision for performance
- removed kernel debug bits, debugfs for security, and bugverbose for lower memory use
- switched to simple FIFO net scheduler
- added patch [v4] binfmt_elf.c: use get_random_int() to fix entropy depleting
- backported latest Qualcomm Crypto Engine (QCE) from CAF msm-3.4
- QDSP6V3 Hexagon driver enabled
The GSM version of MiRaGe kernel and related thread is here
These are any-kernel-updater packages that contain zImage + modules.
- The latest stable build for CDMA Sense-ICS (11192013). MD5sum: 8092d83cea878bd7914e7c482b1eac57
- The latest test build for CDMA Sense-ICS (01132014). MD5sum: 460f63d73f4ce60cf5fb107851a1a690
- The latest stable build for CDMA AOSP-JB (11192013). MD5sum: cf1cf3051eadc6fcf32784705ca6d19e
- The latest test build for CDMA AOSP-JB (01132014). MD5sum: 8dd5f2aaf018d180bb984475bd578d7d
- The package that removes /system/bin/mpdecision and /system/bin/thermald. Mpdecision included in the stock ICS ROM is a drag on the kernel performance without any noticeable benefit of battery life. MiRaGe kernel works much better without it. Thermald creates many error messages and it doesn't work well. If you have flashed the kernel in recovery you don't need this package. If you have flashed the kernel with Flash Image GUI, this package needs to be flashed in recovery only once after the initial flash of MiRaGe (not following updates).
- The package to restore the stock kernel. MD5sum: 28505ef162e26634ad9bc37d3db5e81b The boot image, modules, mpdecision, and, thermald included in this package are from the March 2013 OTA (2.95) of VM and will only work with 1.57 and 1.58 hboot.
- The package to restore the original /system/bin/mpdecision and /system/bin/thermald.
- An Evervolv-based JB ROM I have built to match with this kernel is available here
Instructions and Recommendations
- Flash Image GUI must be used when flashing the MiRaGe kernel first time over the stock kernel since any-kernel-updater script will not be able to expand the stock encrypted boot image. If the EVO3D is still S-ON, Flash Image GUI is also recommended for flashing the MiRaGe kernel since Flash Image GUI bypasses S-ON safely and easily.
- When the kernel package is flashed in the recovery, /system/bin/mpdecision and /system/bin/thermald are deleted since the kernel comes with corresponding kernel-based services. However those two binary files are not deleted by flashing the kernel using Flash Image GUI. So after flashing the MiRaGe kernel for the first time over the stock kernel, either flash the special package above or reflash the kernel in recovery to delete these files separately. This is required only once after the initial MiRaGe kernel upgrade.
- I have tested the kernel with S-ON stock HBOOT 1.57/1.58 and also S-OFF JBear HBOOT 1.57.5757/1.58.5858/1.50.5050. Because the kernel upgrade package is an any-kernel-updater package (i.e. existing boot image is upgraded with new kernel binary), it should work with all HBOOT versions.
- Against the widely claimed misconception, there is no need to wipe dalvik-cache with kernel flash. If you still want to wipe it for your superstition, there is no harm either other than wasting your time and wearing off the flash memory
- If you try to flash the kernel in 4ext recovery while you are S-ON and get caught in a boot loop, you can boot into the fastboot (volume-down and power buttons) and recover the boot partition using the following command.
fastboot flash boot boot.img
- I use the excellent No-frills CPU Control app for controlling/changing the minimum/maximum frequencies, cpu governor, I/O scheduler and also monitoring the CPU stats. Normally, you don't need this app unless you want to control these settings, overclock, or monitor the CPU stats.
- Using Kernel Tuner or similar apps is not recommended. I have optimized the kernel and MiRaGe kernel doesn't need any tuning/tweaking. Please don't post about kernel problems without mentioning that you are using kernel tuner.
- Don't use the JB kernel with stock ICS ROM. Don't report problems to ROM developers without specifying that you use a different kernel with their ROM.
Thanks to Johnnyslt, Sultanxda (Android1234567), and Bigwillyg for their collaboration and help
Thanks to faux123, showp1984, MikeC84, Agraben, and Coolexe for their earlier development and patches
Special thanks to Koush for any kernel updater and joeykrim for Flash Image GUI
Thanks to LeslieAnn for testing USB OTG
Thanks to howpathetic for testing and help with the GSM build
Thanks to sellers86 for additional testing
Thanks to Christopher83 for the Linaro toolchain packages
And, also thanks to Linux, Google, CAF, CM, HTC developers, and all developers on XDA.
Battery Use and Performance for Reference
Battery life corresponds to light daily use with the original OEM battery and CPU @1.7 GHz overclock
The benchmarks are the best values with CPU @1.7 GHz overclock