How to debug aosp emulator on Mac OS M1 - Upgrading, Modifying and Unlocking

Dear All,
I'm new to this forum, so apologies if this is not the right section for my question.
I'm entering the world of AOSP and I built the product target aosp_arm64-eng on a MacOS M1 (ARM64 processor).
Unfortunately when I launch the emulator I get a kernel panic with the below message and I would like to understand how I can debug it
Code:
RAMDISK: lz4 image found at block 0
RAMDISK: lz4 decompressor not configured!
Invalid ramdisk decompression routine. Select appropriate config option.
Kernel panic - not syncing: Could not decompress initial ramdisk image.
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.18.94+ #1
Hardware name: ranchu (DT)
Call trace:
[<ffffffc00008a590>] dump_backtrace+0x0/0x128
[<ffffffc00008a6cc>] show_stack+0x14/0x1c
[<ffffffc0005ca064>] dump_stack+0x80/0xa4
[<ffffffc0005c95a0>] panic+0xe8/0x228
[<ffffffc00074ba34>] rd_load_image+0x2fc/0x5e0
[<ffffffc00074be30>] initrd_load+0x50/0x2cc
[<ffffffc00074b47c>] prepare_namespace+0xd8/0x1ac
[<ffffffc00074ad04>] kernel_init_freeable+0x1bc/0x1dc
[<ffffffc0005c8150>] kernel_init+0x10/0xf4
Rebooting in 5 seconds..Reboot failed -- System halted
From the message it seems that the kernel is not configured correctly.
How can I check if the kernel I build contained the LZ4 support with which the Ramdisk image seems to be compressed?
Thanks.

I think it's not possible to run an emulator on a mac with an arm processor see here

Related

[dev][kernel][kexec]

Last Update : August, 19, 2014
Hi,
I'm still try to bypass the MMU protection.
I have fixe a lot of bug, like memory misalignment, bad adresses allocation, dtb correction, etc...
Last sources and binaries here :
kexec-tools V11.zip : http://forum.xda-developers.com/attachment.php?attachmentid=2902912&stc=1&d=1408401794
kexec-tools binaries V11.zip : http://forum.xda-developers.com/attachment.php?attachmentid=2902913&stc=1&d=1408401794
Sorry, i have always 13 sec reboot after new kernel boot.
"cpu_proc_fin" use a "mcr p15" to init cache and proc that cause freeze.
I try to find solution for that.
Last Update : June, 22, 2014
Hi,
My sources are horrible... but i give something new.
This kexec is for stock kernel only (tested on .757). I thinks theses sources work on other kernel too.
In "kexec-tools V10.zip", you have all my sources. It's highly recommended to mod them to have something OK.
In "kexec binaries.zip", you have binaries to install
=> "kexec_load.ko" and "procfs_rw.ko" must be placed in "/system/lib/modules" folder with "chmod 777"
=> "kexec" must be placed in /system/bin" folder with "chmod 777"
=> cd /system/lib/modules
=> insmod kexec_load.ko
For sources :
Mod and adapt all you want, it's free.
You have 2 scripts in Zip : "./compil-kexec" in "kexec-tools" folder to rebuild and send in device directly (install Adbtcp on device and send by tcp with : adb connect xxx.xxx.xxx.xxx) = work perfectly with me.
"scriptZ1" is for compil stock kernel or another kernel (doomlord kernel for eg)
You must rename "custom_final_files" folder after compil to "final_file" manually ; You can have guest kernel in "custom_final_files" and stock kernel in "final_files" for "kexec-tools" path ... Don't mix a guest and host kernel please ^^
I am tired... i let you test and say if it's ok for you...
Thank a lot to munjeni for his help.
kexec-tools V10.zip : http://forum.xda-developers.com/attachment.php?attachmentid=2811994&stc=1&d=1403456181
kexec binaries.zip : http://forum.xda-developers.com/attachment.php?attachmentid=2811995&stc=1&d=1403456181
Last Update : November, 23, 2013
Hi,
For few days now, i haven't no more kernel panic with my kexec.
I have fixed few stuffs into sources, and add a lot.
These adds are, to include a "dt.img" image file into kexec load process.
This image file is a "device_tree" image to match hardware to software.
So, i assume to don't include atags into boot process, but pass bootloader informations by this DT.
I have programmed a little scan memory to found dynamicly all magic tags, because i found 3 device_tree into memory (magic is "0xd00dfeed").
These 2 device_tree are echo from first and nice structure.
The boot process need to have informations from this DT, and need all informations to initialize hardware (no HDW initialisation by the kernel)
I must first fix issues ; Regroup zImage and dt.img into memory to load a solid bloc to kexec_load module to boot into, and second, fix an offset i can't explain, 0x800 in memory causing misalignment memory
Keep tuned..
Last Update : November, 17, 2013
Hi everybody,
My kexec-tools work for Sony Xperia Z1 stock kernel "3.4.0-perf"
This tools can work on all locked bootloader for all locked device, not only Sony or Z1 models.
This kexec-tools add a kexec_load kernel module (LKM) and use a driver to grant a communication between "kexec" user program and kexec_load.ko module
what is for ?
"kexec" user program load in memory a custom kernel in zImage format, but can load ".tar" image too
This user tool load ramdisk in memory if necessary
This tool is for this purpose only, and don't keep in memory the custom kernel at device reboot.
It is a "user" program, not a "kernel" extension... So, to really do the magic, we need the host kernel (stock sony locked kernel) have a kexec_load capability to reboot in a new gest kernel (custom kernel).
Infortuntly, stock kernel don't have kexec_load capability.
Sony have compiled his stock kernel without this option, and "standard" kexec-tools "need" this option to work.
To see all system call capability of kernel, you can run theses command :
Code:
echo 0 > /proc/sys/kernel/dmesg_restrict
echo 0 > /proc/sys/kernel/kptr_restrict
cat /proc/kallsyms
Do all grep you want here.
The "echo 0" "restrict" is here to unmask logical adresses to "system calls"
Like you can see, "__NR_kexec_load" capability isn't here.
To add kexec_load capability in stock locked kernel, we need to add manualy a kernel module wich add this function into the kernel.
Why ? Because the way to keep in memory a custom kernel need to know a lot of parameters, and keep a specific memory range alive at reboot.
Only kernel can do this.
All user program will be terminated at reboot.
"Standard" kexec_load.ko module use a method to implement the "__NR_kexec_load" function in system call table.
Since 2.6.0 kernel, linux for security reason, have locked in memory the "system_call_table" ; No more add or modification is authorized.
If kexec tool try to add a value, "kexec_load" for us, we causes a kernel panic, and reboot device.
For this reason, i have modify kexec user program and kexec_load module to implement a driver to talk to each other.
this driver replace syscall method, and we no more need to use a system call table.
For this reason, this tool is now compatible with modern kernel like our "3.4.0"
For this reason, this tool must work for other device (Xperia X, P, S, etc...) and another brand
For this reason, if kernel is locked, we can bootstrap to run a new kernel.
Installation
First, you can compil your own kexec tool
Here, sources : http://forum.xda-developers.com/attachment.php?attachmentid=2397299&stc=1&d=1384689174
And here, the binaries : http://forum.xda-developers.com/attachment.php?attachmentid=2397305&stc=1&d=1384689406
(it's not a cwm zip, i have no time to create an installer for now ; use "./compil-kexec" if you want an automatic install)
Install *.ko in /system/lib/modules
Install kexec and kdump in /system/bin
Grant with "chmod 777"
Unzip in kexec-tools folder
Install a toolchain (sudo apt-get install gcc-arm-linux-gnueabi)
launch => ./compil-kexec
what's all
This script can do everythinks for you
- Compilation of tools
- Compilation of modules
- installation in device
This script can compil for every brand you have.
Except you must remove or adapt the patch (see below why)
Patch ??
This patch is because a module must be compiled in the same time the kernel himself.
For this reason a "vermagic", an identifier, is used by system to block every module not compil with kernel
Some custom kernel bypass this to authorize every modules.
But for stock kernel, it is not allowed.
You can easely strapp this by busybox.
"busybox modprobe" for help
"-f" to force load without vermagic
To see this vermagic :
Code:
# uname -r
This "uname -r" must be the same that
Code:
# strings kexec_load.ko | grep vermagic
vermagic=3.4.0-perf-g66807d4-02450-g9a218f1 SMP preempt mod_unload modversions ARMv7
If you want use automaticaly this vermagic, you can modify into the custom kernel this file :
Code:
"include/config/kernel.release" and add :
"3.4.0-perf-g66807d4-02450-g9a218f1"
This file will be use at module compil to match the vermagic.
Infortunatly, it is not enought. :silly:
The infamous "no symbol version for module_layout"
When a module compil is created, it use symbols link to system call function, translate by adresses
Theses symbols are not at same physical adresses in stock kernel and modules (compiled from DooMLoRD kernel).
So, theses adresses must be convert into modules itself to match with stock symbols adress.
A patch is needed.
If you use my script, modules are automatically patched.
Here patches :
Code:
sed -i 's/\x32\x76\x86\x29/\x72\xFF\x5E\x20/' procfs_rw.ko
sed -i 's/\x32\x76\x86\x29/\x72\xFF\x5E\x20/' kexec_load.ko
sed -i 's/\xBB\xD0\xF8\x4D/\x0E\x1C\x63\x77/' kexec_load.ko
sed -i 's/\xA6\x26\x81\x1A/\xD4\x56\x02\x7E/' kexec_load.ko
sed -i 's/\xA3\xD1\xEC\x96/\xEC\x43\x28\x1A/' kexec_load.ko
sed -i 's/\x8C\xE6\x6A\x5F/\x3D\xDF\x02\xF2/' kexec_load.ko
sed -i 's/\x3E\xF3\xEF\xE9/\x18\x7F\xA6\x8A/' kexec_load.ko
sed -i 's/\x8B\xD2\x92\x10/\xC8\x19\x08\x9C/' kexec_load.ko
sed -i 's/\x1C\xE8\x18\xE1/\x7C\x71\x9E\xEF/' kexec_load.ko
sed -i 's/\xAB\x2C\x2F\x8B/\x8E\xD7\x63\xC0/' kexec_load.ko
sed -i 's/\xF5\x62\xAA\x4B/\x34\x80\x1B\x74/' kexec_load.ko
sed -i 's/\x00\x52\xD6\xD7/\x6F\x80\x91\x20/' kexec_load.ko
sed -i 's/\x4F\x77\x57\x6A/\x0C\x57\xC7\x63/' kexec_load.ko
sed -i 's/\xCA\x2F\x65\x71/\x92\xB8\x7F\x53/' kexec_load.ko
sed -i 's/\x0F\xD0\xA0\x91/\xFA\x80\x15\xB4/' kexec_load.ko
sed -i 's/\x29\xA0\x6D\x48/\x6C\x6B\x96\x54/' kexec_load.ko
sed -i 's/\x6D\x1F\x1F\x37/\xCC\x5E\x79\x8B/' kexec_load.ko
sed -i 's/\xFD\x23\xD0\xFB/\xE3\xE3\x68\x52/' kexec_load.ko
You can use hexedit or hexdump to see these adresses :
Code:
hexdump kexec_load.ko | grep ff72
0003d50 b0b0 80ac ff72 205e 6f6d 7564 656c 6c5f
how does it work ?
# kexec --help
For kexec help... nothing more to say.
# lsmod
List loaded modules... You must see
kexec_load 31369 0 - Live 0x00000000 (O)
# rmmod kexec_load.ko
Remove kexec_load module from memory.
# grep kexec /proc/device
To see installed driver.
You must see :
100 kexec_driver
First number is "major" number to identify your driver in system.
# mknod /dev/kexec_driver c 100 0
Install driver.
Major number (here 100), is important for module.
This Major must be the same between module and driver.
By default, 100 is used.
# insmod kexec_load.ko
To install "LKM", kexec_load kernel module.
If another Major is needed, you can use "insmod kexec_load.ko 101" for Major 101
You can use "modprob" if you want, but you must configure the module folder.
How kexec and module exchange informations ?
By the driver.
Normal output for a kernel module is to write in "dmsg" file.
To see kernel output, launch this command :
Code:
# dmesg
To see last kernel log, see in :
Code:
# cat /proc/last_kmsg
For kexec module, this normal way still exist, and give a lot of informations, but to speak with, you must use the driver.
/dev/kexec_driver
You can yourself test communication:
Code:
# cat /dev/kexec_driver
You can send kernel by this communication channel.
Type following commands for help
=> echo help >/dev/kexec_driver
=> dmesg | grep Kexec
Code:
# echo help >/dev/kexec_driver
# cat /dev/kexec_driver
Last command : 'help'
Please type following command :
=> dmesg|grep Kexec
Every command send into driver is receive by kexec_load.ko module and running into the kernel.
The answer can by read thru the driver
Here, you can see that normal way to see messages is allway dmesg.
Code:
# dmesg|grep Kexec
<4>[15050.521628] Kexec: Starting kexec_module...
<6>[15050.521656] Kexec: kexec_driver_contener allocation
<6>[15050.521673] Kexec: kexec_memory_buffer allocation
<4>[15050.521691] Kexec:----------------------------------------------------
<4>[15050.521710] Kexec: kexec_driver created with major : '100'
<4>[15050.521728] Kexec: Please, prepare by typing the following commands :
<4>[15050.521746] Kexec: => mknod /dev/kexec_driver c 100 0
<4>[15050.521761] Kexec: => cat /dev/kexec_driver
<4>[15050.521775] Kexec:-----------------------------------------------------
<4>[15050.521791] Kexec: For help
<4>[15050.521803] Kexec: => echo help >/dev/kexec_driver
(...)
I have add a lot of informations to help to configure kexec.
rdtags, atags ??
Not sure for this part of kernel.
"atags" is the most used method to bootloader to parse commands and informations to kernel at boot.
"atags" is a form of structure in memory to organise informations.
At boot, a address chain is created and can be compulse in /proc/atags file.
This file is read only system.
"rdtags" is another way to bootloader to parse information to kernel.
"rdtags" is not stocked in "/proc"
But, as i see, stock kernel can use "atags" from bootloader.
kexec can substitute bootloader function to create fromscratch a atags chain, and parse to new kernel.
I have change this part to stock atags in "/data/atags", and reuse or change if need.
If this don't work, i must create a rdtags chain to replace atags ; It's not a hard work.
Status
For the moment, kexec tools works.
=> Phase one OK.
I can start Phase Two : new kernel patch.
If you want to help me...
Actually, load a custom kernel and boot into with kexec tools work.
But at boot into, a kernel panic occurs.
It seems, a part of kexec patch is missing in custom kernel.
Hi new thread created for kernel kexec development.
Status: not working: wrong values for mem defines under the kernel is giving segmentation fault as its attempting to write to memory areas that are currently being used byyyyy the system
Instructions:
Make kernel compatible?:
1. Download kernel diff patch from below
2. Terminal - diff patch > diff.txt
How to use:
1. Download kexec-tools (kexec binary) from below
2. Copy into system/bin directory and give it executable permission
3. Download compatible kernel
4. Terminal - kexec --load-hardboot zImage --initrd=initrd.img --mem-min=0x20000000 --command-line="$(cat /proc/cmdline)"
kexec -e
Download links:
Kexec tool- https://db.tt/8DZXQ9eV
Ramdisk firmware 1.548 : https://db.tt/8DZXQ9eV
zImage (kernel):
Source code:
Kernel diff patch: https://db.tt/Xi2htT7Q (currently contains wrong values for mem defines)
Kexec-tools: https://db.tt/I22ofr3b
Special thanks: @delewer @krabappel2548
Reserved
Please move this thread to Xda Devdb, then I can also edit first post etc if I find new stuff
Sent from my C6903 using xda app-developers app
krabappel2548 said:
Please move this thread to Xda Devdb, then I can also edit first post etc if I find new stuff
Sent from my C6903 using xda app-developers app
Click to expand...
Click to collapse
Devdb?
Pm me i dont know what Devdb is lol
Recieved segmentation fault with delewers calculated mem values too
We need to write to memory where we have write access to, maybe lockedbootloader is not allowing us to write? Orrr we are just writing to wrong area of memory
If kexec works on the Z1, can it be ported over to Xperia Z/ZL/T/Ultra? I believe they don't all share the same processor.
Shaky156 said:
Devdb?
Pm me i dont know what Devdb is lol
Click to expand...
Click to collapse
Shaky156 said:
Recieved segmentation fault with delewers calculated mem values too
We need to write to memory where we have write access to, maybe lockedbootloader is not allowing us to write? Orrr we are just writing to wrong area of memory
Click to expand...
Click to collapse
I'll discuss with Kali- today if he's available.
Knucklessg1 said:
If kexec works on the Z1, can it be ported over to Xperia Z/ZL/T/Ultra? I believe they don't all share the same processor.
Click to expand...
Click to collapse
Doesn't need to be same processor, can be ported
Sent from my C6903 using xda app-developers app
Knucklessg1 said:
If kexec works on the Z1, can it be ported over to Xperia Z/ZL/T/Ultra? I believe they don't all share the same processor.
Click to expand...
Click to collapse
Yes it wont matter much, since its not s800 it should be easier for you guys , take the kexec-tool use that, implement the patch write to the correct mem addresses which is free, it should boot if you guys have issues let me know,
I need to calculate the correct addresses.
Ive noticed s800 uses a dt.img, might need to modify kexec-tool to support dt.img, not sure what dt.img does yet, only know it holds values
Shaky156 said:
I need to calculate the correct addresses.
Ive noticed s800 uses a dt.img, might need to modify kexec-tool to support dt.img, not sure what dt.img does yet, only know it holds values
Click to expand...
Click to collapse
the dt.img is needed by the kernel to boot, so I guess we need to load that too in kexec.
EDIT: people that wanna try add kexec patch to their kernel, check github: android_kernel_sony_msm8974/commits/kexec
krabappel2548, i have compil your kernel by my script (fromscratch)
My script (instruction in "DoomLord Build kernel thread" : scriptZ1 http://forum.xda-developers.com/attachment.php?attachmentid=2346163&d=1382568778
(for thoses who want to help us...)
You have a little mod to do here (bad compil) :
In "sound/soc/msm/qdsp6v2/rtac.c"
you must change
#include <q6voice.h>
by
#include "q6voice.h"
btw : no more ideas to load kexec for the moment ...
delewer said:
krabappel2548, i have compil your kernel by my script (fromscratch)
My script (instruction in "DoomLord Build kernel thread" : scriptZ1 http://forum.xda-developers.com/attachment.php?attachmentid=2346163&d=1382568778
(for thoses who want to help us...)
You have a little mod to do here (bad compil) :
In "sound/soc/msm/qdsp6v2/rtac.c"
you must change
#include <q6voice.h>
by
#include "q6voice.h"
btw : no more ideas to load kexec for the moment ...
Click to expand...
Click to collapse
Sorry, I'm trying to get caught up on the forum, but what seems to be the current standing issue to get kexec working?
Knucklessg1 said:
Sorry, I'm trying to get caught up on the forum, but what seems to be the current standing issue to get kexec working?
Click to expand...
Click to collapse
Read the OP
Status paragraph
Memory regions
00000000-07afffff : System RAM
00008000-00b79383 : Kernel code
00d04000-00f0cddb : Kernel data
0ff00000-779fffff : System RAM
7ff00000-7ff3ffff : rdtags_mem
7ff80000-7ffa0fff : last_kmsg
7ffa1000-7ffa5fff : last_amsslog
System RAM MEM = 00000000
So --min-mem=0x20000000
Now need to find a free memory area thatll allow us to write and hopefully the mmu/pmu on locked bootloader wont cancel it
@delewer? @DooMLoRD @kali @Bin4ry
I know I shouldn't disturb, but i must ask: if You achieve Your goal, would it be possible to port it to devices like Xperia P, S, T, U and other NXT? It would be great, many ppl are ready to give a prize for it. Thanks in advance, good luck and sorry again.
Sent from my LT22i using xda app-developers app
king960 said:
I know I shouldn't disturb, but i must ask: if You achieve Your goal, would it be possible to port it to devices like Xperia P, S, T, U and other NXT? It would be great, many ppl are ready to give a prize for it. Thanks in advance, good luck and sorry again.
Sent from my LT22i using xda app-developers app
Click to expand...
Click to collapse
These devices are not 2013 devices, they arent s800 socs, so they are much easier to do, simply take the kexec-tools from op, implement the patch in your kernel, write the correct memory values for your specific device and execute in terminal via the command in op, minmem depends on your device too, good luck
I think some1 tried it already, but it works only for unlocked devices... Anyway, thanks for help.
Sent from my LT22i using xda app-developers app
king960 said:
I know I shouldn't disturb, but i must ask: if You achieve Your goal, would it be possible to port it to devices like Xperia P, S, T, U and other NXT? It would be great, many ppl are ready to give a prize for it. Thanks in advance, good luck and sorry again.
Sent from my LT22i using xda app-developers app
Click to expand...
Click to collapse
Does doing this require having an Unlocked Boot loader prior to implementation?
Sent from my C6603 using xda app-developers app
A few informations about kexec-tools debug
in kexec.c
Fonction :
if (file_type.load(argc, argv, kernel_buf,
kernel_size, &info) < 0) {
fprintf(stderr, "Cannot load %s\n", kernel);
return -1;
}
With a forced execution of kexec (bypass error to see...)
--mem-min=0x90000000
kernel: 0xb6b9d008 kernel_size: 3e9340
debug: 1 - after get memory range
debug: 2 - after type test
debug: 3 - after type test
debug: 4 - after info.kexec
debug: Focus 1 - argc '5' ; argv 'be856774' ; kernel_buf 'b6b9d008' ; kernel_size '3e9340' ; info 'be856548' ; i '1' ; file_type.name 'zImage'
Could not find a free area of memory of 3f1340 bytes...
Cannot load zImage
debug: 10 - before trampoline
debug: 11 - after trampoline
debug: 12 - before segment load
debug: 13 - after segment load
debug: 8 - before sort_segment
debug: 9 - after sort_segment
debug: 6 - before purgatory
debug: 7 - after purgatory
kexec_load: entry = (nil) flags = 280004
nr_segments = 0
kexec_load failed: Function not implemented
entry = (nil) flags = 280004
nr_segments = 0
debug: 5 - return result : ffffffff
With a forced bypass on file_type.load , we have this :
--mem-min=0x20000000
debug: Focus 1 - argc '5' ; argv 'bef18774' ; kernel_buf 'b6bc7008' ; kernel_size '3e9340' ; info 'bef18548' ; i '1' ; file_type.name 'zImage'
Segmentation fault
delewer said:
A few informations about kexec-tools debug
in kexec.c
Fonction :
if (file_type.load(argc, argv, kernel_buf,
kernel_size, &info) < 0) {
fprintf(stderr, "Cannot load %s\n", kernel);
return -1;
}
With a forced execution of kexec (bypass error to see...)
--mem-min=0x90000000
kernel: 0xb6b9d008 kernel_size: 3e9340
debug: 1 - after get memory range
debug: 2 - after type test
debug: 3 - after type test
debug: 4 - after info.kexec
debug: Focus 1 - argc '5' ; argv 'be856774' ; kernel_buf 'b6b9d008' ; kernel_size '3e9340' ; info 'be856548' ; i '1' ; file_type.name 'zImage'
Could not find a free area of memory of 3f1340 bytes...
Cannot load zImage
debug: 10 - before trampoline
debug: 11 - after trampoline
debug: 12 - before segment load
debug: 13 - after segment load
debug: 8 - before sort_segment
debug: 9 - after sort_segment
debug: 6 - before purgatory
debug: 7 - after purgatory
kexec_load: entry = (nil) flags = 280004
nr_segments = 0
kexec_load failed: Function not implemented
entry = (nil) flags = 280004
nr_segments = 0
debug: 5 - return result : ffffffff
With a forced bypass on file_type.load , we have this :
--mem-min=0x20000000
debug: Focus 1 - argc '5' ; argv 'bef18774' ; kernel_buf 'b6bc7008' ; kernel_size '3e9340' ; info 'bef18548' ; i '1' ; file_type.name 'zImage'
Segmentation fault
Click to expand...
Click to collapse
Did you compile this kexec yourself? Or did you get this from krapabbel? I issued krapabbel to compile a new debug version have gave him the code but never heard back from him :/
Anywayz so cannot find free memory is the issue

[KERNEL] Khaon's Kernel ♦ F2FS ♦ LINARO 4.7.4 ♦03/04

Hello everyone!! Want to try f2fs on your device? You are at the good place to give it a try!​
disclaimer said:
I am not responsible for any damage to your phone.
Read before downloading or posting in the thread:
Proceed with caution if you have no experience.
Click to expand...
Click to collapse
​
INTRODUCTION
I wanted to port f2fs for our device since it gives a nice performance boost. After few months of learning how to develop and program his own custom kernel here is my first personal release.
This is an open devDB xda project. Feel free to fill in bugs reports, feature(s) requests and reviews.
​
To those who don't know what is f2fs
F2FS (Flash-Friendly File System) is a flash file system created by Jaegeuk Kim (Hangul: 김재극) at Samsung for the Linux operating system kernel.[2]
The motive for F2FS was to build a file system that from the start takes into account the characteristics of NAND flash memory-based storage devices (such as solid-state disks, eMMC, and SD cards), which are widely used in computer systems ranging from mobile devices to servers.
Click to expand...
Click to collapse
Some benchmarks to point out the performance difference between EXT4 and F2FS
AndroGuide benchmarks : ext4 vs f2fs ( seemes to be using the most recent f2fs)
XDA's benchmark : ext4 vs f2fs
Phoronix's benchs ext4 vs btfrs vs f2fs
Another Phoronix's bench
Click to expand...
Click to collapse
Optipops features :
Kernel's features :​
Compiled with linaro 4.7.4 with optimized flags : O3, etc.
Linux 3.4.67: synced with cyanogen 's manta kernel git, google's common branch, some parts of the kernel updated to 3.4.108, and many fixes from CAF,linaro, blabla.
Governors : interactive, intelliactive,intellimm,conservative, ktoonservative , performance, userspace, nigtmahre(on request)(ask for some others if you prefer them over the one I provide)
I/O schedulers : noop, cfq, deadline, bfq(tweaked for nand devices),fiops,zen,sio
f2fs updated from upstream git(08 september 2015)
UV and OC both for the GPU AND CPU supported
Control for the gpu table thresholds
touchboost driver for cpu and gpu in replacement of crappy powerHAL touch interface ( thx @franciscofranco to have adapted qcom code to ageneric one)
arm optimized crypto algorithms.(for the ones that want to crypt their data)
f2fs crypto support
kernel neon support
kernel side touch boost driver
double tap to wake
AnyKernel2 Solution: Allow users to install the kernel on different distribution. It also detects the filesystem of your partitions to produce a correct fstab. ( f2fs is supported on any partition BUT system )
and many more patches(see my github!)
​installation instructions :​
Wipe Data Cache System
Flash The kernel
If issues are met, delete the
Code:
/sdcard/Android/data
folder.
IF YOU FACE ERROR/ISSUES PLEASE USE MY TWRP CUSTOM RECOVERIES AT this link
How To Migrate one partition from ext4 to f2fs(vice-versa):INSTRUCTIONS FOR TWRP 2.8.x.y
GunnerOnASpooky said:
1. Backup everything from your internal storage to your PC or what ever, if you are migrating /data partition,since the entire internal storage is going to get wiped out with format!!!!!!!!!!
2. Download the recovery from my gdrive
3. Flash the recovery from the bootloader (fastboot flash recovery XX.img)
4. Reboot into the newly flashed recovery
5. Choose wipe, advanced, then select the partition you want to change its filesystems
6. Choose the change file system option on the right
7. Select change file system again
8. Select f2fs(or ext4)
9. Repeat for all you wish to convert (I did system!/data/cache but /system partition should be working if you rom package flash extracts instead of flashing an image)
Click to expand...
Click to collapse
Credits:
@ktoonsez - for his kernel , KT- twrp and his work.
Team Win and @helicopter88 @Dees_Troy for their help.
Samsung for F2FS: heh!
@craigacgomez - for thunderkat kernel
@JustArchi - for his opti v3 build rom.
Cyanogendmod for their ROM
Linaro foundation for their toolchains
@faux123 for his intelliactive governor
@franciscofranco - for his work on touch boost drivers and mako kernel
@osm0sis - for AnyKernel2
Source:
KT-TWRP
kernel
Ramdisks
DOWNLOADS LINK​
XDA:DevDB Information
Khaon's project for Nexus 10, Kernel for the Google Nexus 10
Contributors
Khaon, ktoonsez,dees_troy,cyanogenmod,faux123,franciscofranco
Source Code: https://github.com/Khaon/kernel_samsung_manta
Kernel Special Features: This kernel is compiled with lastest UBERTC 4.8.5 It features UC/OC, UV, bfq, optimizaed compillation falgs, uksm, frandom, supports f2fs, dynamiclly mounts f2fs/ext4 partitions and more
Version Information
Status: Stable
Stable Release Date: 2015-01-03
Created 2014-09-27
Last Updated 2015-01-12
XDA:DevDB Information
Khaon's kernel for Nexus 10, Kernel for the Google Nexus 10
Contributors
Khaon, Cl3Kener, ktoonsez,dees_troy,cyanogenmod,faux123,franciscofranco,freak_97,despairfactor
Source Code: https://github.com/Khaon/kernel_samsung_manta
Kernel Special Features: This kernel is compiled with lastest UBERTC 4.8.5. It features UC/OC, UV, bfq, optimizaed compillation falgs, uksm, frandom, supports f2fs, dynamiclly mounts f2fs/ext4 partitions and more
Version Information
Status: Stable
Stable Release Date: 2015-07-13
Beta Release Date: 2015-04-17
Created 2014-09-27
Last Updated 2015-09-06
XDA:DevDB Information
Khaon's kernel for Nexus 10, Kernel for the Google Nexus 10
Contributors
Khaon, Cl3Kener, ktoonsez,dees_troy,cyanogenmod,faux123,franciscofranco,freak_97,despairfactor
Source Code: https://github.com/Khaon/kernel_samsung_manta
Kernel Special Features: This kernel is compiled with lastest UBERTC 4.8.5. It features UC/OC, UV, bfq, optimizaed compillation falgs, uksm, frandom, supports f2fs, dynamiclly mounts f2fs/ext4 partitions and more
Version Information
Status: Stable
Stable Release Date: 2015-09-08
Beta Release Date: 2015-04-17
Created 2014-09-27
Last Updated 2015-09-08
XDA:DevDB Information
Khaon's kernel for Nexus 10, Kernel for the Google Nexus 10
Contributors
Khaon, Cl3Kener, ktoonsez,dees_troy,cyanogenmod,faux123,franciscofranco,freak_97,despairfactor
Source Code: https://github.com/Khaon/kernel_samsung_manta
Kernel Special Features: This kernel is compiled with lastest UBERTC 4.8.5. It features UC/OC, UV, bfq, optimizaed compillation falgs, uksm, frandom, supports f2fs, dynamiclly mounts f2fs/ext4 partitions and more
Version Information
Status: Stable
Stable Release Date: 2015-09-08
Beta Release Date: 2015-04-17
Created 2014-09-27
Last Updated 2016-04-02
Changelogs
Recommanded applications
Kernel Audiutor for kernel management. It supports for now all kernel features but gpu overclocking.
Changelogs
from 08/04 to 13/08
Merge remote-tracking branch 'exynos/android-exynos-manta-3.4-lollipop-mr1' into khaon-new
Merge remote-tracking branch 'common/android-3.4' into khaon-new
gpu:mali:dvfs:set gpu boost sysfs interface in msecs instead of usecs
mali:dvfs:enhanced gpu voltage control
defconfig:enabled f2fs crypto
f2fs:fix compilation errors when crypto is enabled
KEYS: Add invalidation support
f2fs: fix the prototype of find_target_dentry
Revert "vfs: make it possible to access the dentry hash/len as one 64-bit entry"
f2fs: import upstream sources
defconfig:compile nightmare governor
cpufreq:add nightmare governor drivers/cpufreq/Makefile
ipv6: clean up anycast when an interface is destroyed
ipv6: sysctl to restrict candidate source addresses
dt2w: enhancements to prevent the device to be all the time awake when dt2w is disabled
Merge remote-tracking branch 'common/android-3.4' into HEAD
Fix incorrect conflict resolution in "vfs: Add setns support for the mount namespace"
proc: fix build broken by proc inode per namespace patch
Revert "android: drivers: Fix build broken by android debugfs fix."
android: drivers: Fix build broken by android debugfs fix.
proc: Allow proc_free_inum to be called from any context
proc: Usable inode numbers for the namespace file descriptors.
proc: Fix the namespace inode permission checks.
proc: Generalize proc inode allocation
vfs: Allow unprivileged manipulation of the mount namespace.
vfs: Only support slave subtrees across different user namespaces
vfs: Add a user namespace reference from struct mnt_namespace
vfs: Add setns support for the mount namespace
consitify do_mount() arguments
do_add_mount()/umount -l races
fs: introduce inode operation ->update_time
VFS: Comment mount following code
VFS: Make clone_mnt()/copy_tree()/collect_mounts() return errors
get rid of magic in proc_namespace.c
get rid of ->mnt_longterm
vfs: umount_tree() might be called on subtree that had never made it
brlocks/lglocks: API cleanups
brlocks/lglocks: turn into functions
lglock: remove online variants of lock
Revert "vfs: umount_tree() might be called on subtree that had never made it"
android: drivers: workaround debugfs race in binder
Revert "android: drivers: workaround debugfs race in binder"
ipv4: Missing sk_nulls_node_init() in ping_unhash().
f2fs:fix for linux 3.4
remove permissive mode by default
fs: Introduce FALLOC_FL_ZERO_RANGE flag for fallocate
fs: Add new flag(FALLOC_FL_COLLAPSE_RANGE) for fallocate
f2fs: disable the discard option when device doesn't support
f2fs: fix a deadlock for summary page lock vs. sentry_lock
f2fs: recovering broken superblock during mount
f2fs: truncate data blocks for orphan inode
f2fs: fix building on 32-bit architectures
f2fs: avoid buggy functions
f2fs: add compat_ioctl to provide backward compatability
f2fs: do not issue next dnode discard redundantly
f2fs: add default mount options to remount
f2fs: report unwritten area in f2fs_fiemap
f2fs: avoid value overflow in showing current status
f2fs: support FALLOC_FL_ZERO_RANGE
f2fs: support FALLOC_FL_COLLAPSE_RANGE
f2fs: introduce f2fs_replace_block() for reuse
block: introduce the BFQ-v7r8 I/O sched for 3.4
cpufreq.h:correct the prototype of cpufreq_frequency_table *cpufreq_frequency_get_table_ordered
doubletap2wake:initial reworking
ptrace: fix ptrace defect cause by a merge fail
android: drivers: workaround debugfs race in binder
neigh: Better handling of transition to NUD_PROBE state
New Build Breakage in branch: kernel-m-dev-tegra-flounder-3.10 @ 1960706
Revert "double tap to wake initial introduction"
Revert "DT2W: give the capacity to wake to the driver and let the driver awake"
Merge remote-tracking branch 'common/android-3.4' into khaon-new
gpu:mali:add control for the gpu table and gpu boost duration, also decreased the gpu governor poll rate from 100 ms to 75 ms
gpu:mali:added an sysfs interface for the gpu boost freq
invensense: testBatchAndFlush CTS issues
selinux: enable per-file labeling for debugfs files.
suspend: Return error when pending wakeup source is found.
ipv4: Missing sk_nulls_node_init() in ping_unhash().
added a sysfs interface for the gpu voltage
build script updated
thermal: increased the start throlle a bit for the gpu and increase for the mem
gpu:reworked the voltage and increased voltage for the 864 cache speed
DT2W: give the capacity to wake to the driver and let the driver awake
net/unix: sk_socket can disappear when state is unlocked
selinux: enable genfscon labeling for sysfs and pstore files
selinux: enable per-file labeling for debugfs files.
selinux: correctly label /proc inodes in use before the policy is loaded
thermal:tmu-exynos:reworked slightly the driver
suspend: Return error when pending wakeup source is found.
gpu/cpu oc: little changes for the voltage
slight rework of compil flags
gpu oc: introduction of 667Mhz and 720Mhz steps
double tap to wake initial introduction
f2fs: fix counting the number of inline_data inodes
f2fs: don not re-lookup nat cache with same nid
f2fs: remove unneeded f2fs_make_empty declaration
f2fs: issue discard with finally produced len and minlen
f2fs: introduce discard_map for f2fs_trim_fs
f2fs: revmove spin_lock for write_orphan_inodes
f2fs: split find_data_page according to specific purposes
f2fs: add need_dentry_mark
f2fs: fix race on allocating and deallocating a dentry block
f2fs: introduce dot and dotdot name check
f2fs: move get_page for gc victims
f2fs: add sbi and page pointer in f2fs_io_info
f2fs: add f2fs_may_inline_{data, dentry}
f2fs: clean up f2fs_lookup
f2fs: introduce f2fs_commit_super
f2fs: add f2fs_map_blocks
f2fs: add feature facility in superblock
f2fs: move existing definitions into f2fs.h
f2fs: add missing version info in superblock
f2fs: fix not to check IS_ERR for null pointer
f2fs: make has_fsynced_inode static
f2fs: add offset check routine before punch_hole() in f2fs_fallocate()
f2fs: use is_valid_blkaddr to verify blkaddr for readability
f2fs: fix wrong error hanlder in f2fs_follow_link
Revert "f2fs: enhance multi-threads performance"
touchboost:increased the interval from 150ms to 300ms
build script updated
gpu:arm:mali:add input touchboost
SELinux: ss: Fix policy write for ioctl operations
seccomp: Replace BUG(!spin_is_locked()) with assert_spin_lock
nf: IDLETIMER: Adds the uid field in the msg
drbd: merge_bvec_fn: properly remap bvm->bi_bdev
writeback: fix a subtle race condition in I_DIRTY clearing
writeback: Move I_DIRTY_PAGES handling
input: evdev: Move wake_lock_destroy call
f2fs:sync with upstream branch
ipv4: Missing sk_nulls_node_init() in ping_unhash().
SELinux: ss: Fix policy write for ioctl operations
seccomp: Replace BUG(!spin_is_locked()) with assert_spin_lock
nf: IDLETIMER: Adds the uid field in the msg
VFS: Make more complete truncate operation available to CacheFiles
Merge remote-tracking branch 'common/android-3.4' into khaon-new
SELinux: use deletion-safe iterator to free list
subsystem: CPU FREQUENCY DRIVERS- Set cpu_load calculation on current frequency
gpu:mali:dvfs:reworked stock dvfs table
f2fs: flush symlink path to avoid broken symlink after POR
f2fs: avoid abnormal behavior on broken symlink
f2fs: change 0 to false for bool type
arm:midguard:fixed bus frequency for 533 mhz
kernel: add support for gcc 5
arm:midgard:decreased up threshold for gpu governor
vfs: check if f_count is 0 or negative
hrtimer: Prevent remote enqueue of leftmost timers
hrtimer: Prevent all reprogramming if hang detected
hrtimer: Set expiry time before switch_hrtimer_base()
sched/fair: Improve the ->group_imb logic
sched/fair: Revert sched-domain iteration breakage
sched/fair: Propagate 'struct lb_env' usage into find_busiest_group
sched/fair: Add some serialization to the sched_domain load-balance walk
sched/fair: Let minimally loaded cpu balance the group
sched: Change rq->nr_running to unsigned int
sched/fair: Implement fast idling of CPUs when the system is partially loaded
sched: Fix inaccurate accounting for real-time task
sched: Micro-optimize the smart wake-affine logic
sched: Implement smarter wake-affine logic
sched/idle: Avoid spurious wakeup IPIs
sched/__wake_up_sync_key(): Fix nr_exclusive tasks which lead to WF_SYNC clearing
Merge remote-tracking branch 'common/android-3.4' into khaon-new
SELinux: per-command whitelisting of ioctls
security: lsm_audit: add ioctl specific auditing
SELinux: Update policy version to support constraints info
SELinux: add default_type statements
SELinux: allow default source/target selectors for user/role/range
selinux: add SOCK_DIAG_BY_FAMILY to the list of netlink message types
selinux/nlmsg: add XFRM_MSG_MAPPING
selinux/nlmsg: add XFRM_MSG_MIGRATE
selinux/nlmsg: add XFRM_MSG_REPORT
selinux/nlmsg: add XFRM_MSG_[NEW|GET]SADINFO
selinux/nlmsg: add XFRM_MSG_GETSPDINFO
selinux/nlmsg: add XFRM_MSG_NEWSPDINFO
cpufreq:interactive:let's try those tunnables
08/03
kernel
squashed commits from upstream kernel revision:
blktrace: fix accounting of partially completed requests
block: fix a probe argument to blk_register_region
vfs,proc: guarantee unique inodes in /proc
mm: fix aio performance regression for database caused by THP
ASoC: wm_hubs: Add missing break in hp_supply_event()
ALSA: fix oops in snd_pcm_info() caused by ASoC DPCM
can: dev: fix nlmsg size calculation in can_get_size()
ipv4: fix ineffective source address selection
proc connector: fix info leaks
net: heap overflow in __audit_sockaddr()
net: do not call sock_put() on TIMEWAIT sockets
tcp: do not forget FIN in tcp_shifted_skb()
tcp: must unclone packets before mangling them
OOM, PM: OOM killed task shouldn't escape PM suspend
ALSA: pcm: use the same dma mmap codepath both for arm and arm64
random: add and use memzero_explicit() for clearing data
crypto: more robust crypto_memneq
vfs: fix data corruption when blocksize < pagesize for mmaped data
target: Fix queue full status NULL pointer for SCF_TRANSPORT_TASK_SENSE
block: fix alignment_offset math that assumes io_min is a power-of-2
fix misuses of f_count() in ppp and netlink
fs: make cont_expand_zero interruptible
fs: Fix theoretical division by 0 in super_cache_scan().
framebuffer: fix border color
power: charger-manager: Fix NULL pointer exception with missing cm-fuel-gauge
kvm: don't take vcpu mutex for obviously invalid vcpu ioctls
int_sqrt: Improve 3x faster integer sqrt.
net: ping: Return EAFNOSUPPORT when appropriate.
android: base-cfg: turn off /dev/mem and /dev/kmem
net: ipv6: make "ip -6 route get mark xyz" work.
Set the iif for IPv6 packets as well.
Merge remote-tracking branch 'common/android-3.4' into khaon-new
sched: Fix reference to stale task_struct in try_to_wake_up()
Merge remote-tracking branch 'common/android-3.4' into khaon-new
fs/proc/task_mmu.c: add user-space support for resetting mm->hiwater_rss (peak RSS)
gpu:mali:
reworked gpu governor table
fs:
f2fs:updatd to upstream revision
defconfig:
defconfig:enabled neon features
defconfig:add NTFS support
cpufreq:
cpufreq:ktoonservative:made touch boost smarter
cpufreq:interactive:increased DOWN_LOW_LOAD_THRESHOLD to 20%
Rom(changes from optipop official sources):
core:
Add support for exec command in init scripts.
init: Fix memory corruption when sanitizing platform paths
init: Do not call recursive_restorecon on soc.0
init: Make restorecon_recursive work for /data/
fs_mgr: Skip filesystem check unless fs_type matches
Add libminshacrypt static lib
device/manta:
fstab:removed fastboot and flush_merge mount options
twrp:added fstab and updated config
manta: Use better mount options
BoardConfig:enabled f2fs for userdata image
Audio proprietaries from stock ROM
Add support for more filesystems
Enabled BLE, GATT, SMP (bluetooth low-energy)
OTG USB storage support
Update full_manta properties
ART dex2oat optimisation properties
Final final final N5 wallpaper.
fstab: enabled f2fs support
enable inline kernel building
audio_effects:added support for viper4audio
post install validation:resize the system partition after installing the rom
added reboot to recovery button and screenshot in the power menu
manta: add GlobalActionList config
call my vendor script
enable translucent decor
Remove obsolete dalvik.gc.type-precise
manta: Enable libm optimizations
enabled optipop optimizations
power: updated to my personnal library
added twrp config for manta
TWRP 2.8.5.0:
switched to cm12's f2fs tools(1.4.1)
use my kernel instead of stock one with f2fs patches
16/02
Kernel changelog :
f2fs synced with latest revision
merged aosp new commits
reworked ktoonservative a bit
picked few patches from upstream 3.4.106 kernel
Click to expand...
Click to collapse
20/01
Hello little update to the kernel:
introduced 864 Mhz cache frequencies for 1.6+++ freq.
merged with google's androidd 3.4 branch: squashed the following commits:
Merge remote-tracking branch 'common/android-3.4' into lollipop
ARM: pull in <asm/simd.h> from asm-generic
ARM: be strict about FP exceptions in kernel mode
ARM: move VFP init to an earlier boot stage
crypto: create generic version of ablk_helper
ARM: add support for kernel mode NEON
crypto: sha - Handle unaligned input data in generic sha256 and sha512.
crypto: sha512_generic - set cra_driver_name
crypto: sha512 - Expose generic sha512 routine to be callable from other modules
crypto: create generic version of ablk_helper
defconfig updated:enabled arm crypto
KEYS: Provide signature verification with an asymmetric key
KEYS: Asymmetric public-key algorithm crypto key subtype
KEYS: Implement asymmetric key type
crypto: add crypto_[un]register_shashes for [un]registering multiple shash entries at once
ARM: 8120/1: crypto: sha512: add ARM NEON implementation
ARM: 8119/1: crypto: sha1: add ARM NEON implementation
ARM: 8118/1: crypto: sha1/make use of common SHA-1 structures
crypto: arm-aes - fix encryption of unaligned data
CRYPTO: Fix more AES build errors
ARM: add .gitignore entry for aesbs-core.S
ARM: add support for bit sliced AES using NEON instructions
ARM: move AES typedefs and function prototypes to separate header
ARM: 7837/3: fix Thumb-2 bug in AES assembler code
ARM: 7723/1: crypto: sha1-armv4-large.S: fix SP handling
ARM: 7626/1: arm/crypto: Make asm SHA-1 and AES code Thumb-2 compatible
arm/crypto: Add optimized AES and SHA1 routines
sync with f2fs upstream branch
squashed few commits from CAF:
mm: vmscan: lock page on swap error in pageout
Staging: android: binder: More offset validation
Input: Send events one packet at a time
binder: NULL pointer reference
staging: binder: add vm_fault handler
staging: binder: Change binder mutex to rtmutex.
report if instablity!
02/01
khaon said:
kernel:
cpufreq:
cpufreq: Retain only online cpus in managed_policy->cpus
cpufreq:interactive:reworked tunnables
cpufreq:interactive: making sure cpufreq stays low when it needs to stay low
cpufreq:interactive:switched to touchboost driver
cpufreq: interactive: prevents the frequency to directly raise above the hispeed_freq from a lower frequency.
cpufreq: interactive: don't skip waking up speedchange_task if target_freq > policy->cur
cpufreq: interactive: delete timers for GOV_START
cpufreq: interactive: Fix null pointer dereference in interactive governor
cpufreq: interactive: Remove unnecessary cpu_online() check
cpufreq:ktoonservative:switch to generic input touchboost driver
Tweaks on OC (from @ktoonsez )
Makefile:
Makefile:removed graphite flags
exynos:
exynos:increased thermald throttling temp
drivers:
input: touchboost: add my generic touchboost driver governor agnostic. Its slightly changed from my N5, N4 and N7 version to adapt to this arch ( from @franciscofranco )
filesystems:
f2fs:sync with upstream branch
frandom: A fast random number generator
block:
block:bfq:adjusted tunnables for nand devices
block:bfq v7r7 v7r7: . BUGFIX: Prevent the OOM queue from being involved in the queue cooperation mechanism. In fact, since the requests temporarily redirected to the OOM queue could be redirected again to dedicated queues at any time, the state needed to correctly handle merging with the OOM queue would be quite complex and expensive to maintain. Besides, in such a critical condition as an out of memory, the benefits of queue merging may be little relevant, or even negligible. . IMPROVEMENT: Let the OOM queue be initialized only once. Previously, the OOM queue was reinitialized, at each request enqueue, with the parameters related to the process that issued that request. Depending on the parameters of the processes doing I/O, this could easily cause the OOM queue to be moved continuously across service trees, or even across groups. It also caused the parameters of the OOM queue to be continuously reset in any case. . CODE IMPROVEMENT. Performed some minor code cleanups, and added some BUG_ON()s that, if the weight of an entity becomes inconsistent, should better help understand why.
kernel:
sched: LOAD_FREQ (4*HZ+61) avoids loadavg Moire. From http://ripke.com/loadavg/moire
Merge remote-tracking branch 'common/android-3.4' into khaon-new
Rom:
build:use a modular list to disable O3 optimizations (fixes for example blue tooth crashes, report any new other FC's, if they related to the optimizations flags, I can try tracking down the relevant module and add it to the list.
audio_effects:added support for viper4audio
power: removed touch screen boost's code because we use kernel side touch boost driver
Click to expand...
Click to collapse
khaon said:
19/12
khaon said:
Rom:
powerHAL: reworked the driver to prevent overriding user's CPU freq speed to 1.7GHz.
powerHAL: reworked the driver to break early on screen interaction if the current cpu governor is not interactive
build:clang: compile the rom with Ofast instead of O3 ( since this flag enables ffast-math, it violates IEEE, thus it may bring instability or decrease in performance, report weird behaviour.
Kernel:
ext4 updated to 3.4.105
frandom in replacement for random and uradom
thermal throttling: squashed @ktoonsez thermal algorithm
various cherry-picking from 3.4.105 kernel and from linux kernel upstream(include among other lz4 up to date, various arm patches, few patches
Anykernel:
Full switching to anykernel2 solution by osmosis:
patch the fstab upon flashing the zip package accordingly to your partitions' file systems
post-init script added to tweak vm,io,sched,...
Click to expand...
Click to collapse
19/11
khaon said:
Changelog
TWRP: added unofficial 2.8.1.0 build supporting f2fs
Click to expand...
Click to collapse
20/10
khaon said:
Changelog
ROM:
20/10 unoficial nightly compiled with linaro 4.8.4 with this build
Shipped with my linux mainline kernel
Kernel :
updated to Linux3.4.104
sync with google's kernel 3.4 banch
sync with f2fs branch
frandom: A fast random number generator as a kernel module for Linux.
mm: Added file system dynamic read-ahead (Credits to Chad Gooldman)
block:bfq:updated to v7r6
Click to expand...
Click to collapse
23/09/14
Linux 3.4.103
Makefile : compiling with graphite
frandom: A fast random number generator as a kernel module for Linux.
Vibration interface goes LIVE
Click to expand...
Click to collapse
F2FS :
f2fs: refactor flush_nat_entries to remove costly reorganizing ops
f2fs: introduce FITRIM in f2fs_ioctl
f2fs: introduce cp_control structure
f2fs: use more free segments until SSR is activated
f2fs: change the ipu_policy option to enable combinations
f2fs: fix to search whole dirty segmap when get_victim
f2fs: fix to clean previous mount option when remount_fs
f2fs: skip punching hole in special condition
f2fs: support large sector size
f2fs: fix to truncate blocks past EOF in ->setattr
f2fs: update i_size when __allocate_data_block
f2fs: use MAX_BIO_BLOCKS(sbi)
f2fs: remove redundant operation during roll-forward recovery
f2fs: do not skip latest inode information
f2fs: fix roll-forward missing scenarios
f2fs: fix conditions to remain recovery information in f2fs_sync_file
f2fs: introduce a flag to represent each nat entry information
f2fs: use meta_inode cache to improve roll-forward speed
f2fs: fix double lock for inode page during roll-foward recovery
f2fs: fix a race condition in next_free_nid
Click to expand...
Click to collapse
Merge remote-tracking branch 'common/android-3.4' into origin/google_mainline:
seccomp: Use atomic operations that are present in kernel 3.4.
seccomp: implement SECCOMP_FILTER_FLAG_TSYNC
introduce for_each_thread() to replace the buggy while_each_thread()
seccomp: allow mode setting across threads
seccomp: introduce writer locking
seccomp: split filter prep from check and apply
sched: move no_new_privs into new atomic flags
ARM: add seccomp syscall
seccomp: add "seccomp" syscall
seccomp: split mode setting routines
seccomp: extract check/assign mode helpers
seccomp: create internal mode-setting function
MAINTAINERS: create seccomp entry
CHROMIUM: ARM: r1->r0 for get/set arguments
CHROMIUM: seccomp: set -ENOSYS if there is no tracer
CHROMIUM: ARM: arch/arm: allow a scno of -1 to not cause a SIGILL
CHROMIUM: arch/arm: select HAVE_ARCH_SECCOMP_FILTER
CHROMIUM: arch/arm: move secure_computing into trace; respect return code
CHROMIUM: arch/arm: add asm/syscall.h
samples/seccomp: fix dependencies on arch macros
seccomp: fix build warnings when there is no CONFIG_SECCOMP_FILTER
seccomp: ignore secure_computing return values
seccomp: use a static inline for a function stub
Documentation: prctl/seccomp_filter
Fix execve behavior apparmor for PR_{GET,SET}_NO_NEW_PRIVS
Add PR_{GET,SET}_NO_NEW_PRIVS to prevent execve from granting privs
Click to expand...
Click to collapse
13/09/14 :
Recovery:
Added twrp-2.8.0.0 supporting mounting f2fs partitions
Click to expand...
Click to collapse
Ramdisk :
[
sync with cm
using lz4 compression algorithm for both ramdisk and kernel image
unified all version into a single kernel : at boot a script check which is the fs of each partition
Click to expand...
Click to collapse
Khaon's kernel :
added lz4 kernel support for decompression
f2fs synced with upstream dev branch.
ARM :
optimized AES and SHA1 routines
sha1: add ARM NEON implementation
support neon in kernel
commits from former kernels
commits from linux/master, google's kernel/common, cyanogenmod's manta branches.
Click to expand...
Click to collapse
Click to expand...
Click to collapse
Reserved
Reserved
Thanks a lot for your work.
I'll try it with CM asap.
For more download convenience, can you upload an all-in-one zip with recovery and the 2 kernel somewhere else than github, it could be difficult to download from there. Thanks again.
yeah, i ll put it on mediafire.
Khaon said:
yeah, i ll put it on mediafire.
Click to expand...
Click to collapse
Awesome work man!
F2FS fully working on System/Data/Cache with SlimKat 5.8 weekly 4.4.3 and your F2FSall Ktoonsez kernel...
Nexus 10 is flying now!
EDIT: I'm getting a bunch of freeze-ups which result into reboots, is this happenng to anyone else?
Steps i took:
fastboot flashed kt-twrp
changed settings (including /system)
wiped what needed to be wiped
replaced Rom script( SlimKat weekly build 4.4.3)
installed rom, correct kernel, and gapps
Any advice would be appreciated!
I have some pb too. It's quite impossible for me to copy something from my usb stick to the internal memory. It freezes almost every time.
No problem in ext4 with same ROM.
Only problems I encountered were freezes/reboots for the very first hours of use, been so far in full f2fs with cyanogen M7 no probs here.
However, did you try with only cache+data partition?
Yep, I was on cm nightlies and data/cache only.
Now I'm trying omni, I will try with this ROM
Could you paste the content of the fstab please?
Envoyé de mon MI 2S en utilisant Tapatalk
About the fstab: What updates the fstype for the partitions we choose to convert to F2FS? Is TWRP 'smart' enough to write the proper /fstab.manta? I thought the boot.img in the ROM zip contained this file?
Really excited to switch to F2FS, I've been running it on my Arch boxes for a while now. Anyone worked on an auto updater for the updater-script? I'm on OmniROM and flash daily so it would be nice to not have to hand edit and re-pack the zip every day. I'd look into doing it but I'm not super confident I'd go about it the proper way.
b1g.p0ppa said:
About the fstab: What updates the fstype for the partitions we choose to convert to F2FS? Is TWRP 'smart' enough to write the proper /fstab.manta? I thought the boot.img in the ROM zip contained this file?
Really excited to switch to F2FS, I've been running it on my Arch boxes for a while now. Anyone worked on an auto updater for the updater-script? I'm on OmniROM and flash daily so it would be nice to not have to hand edit and re-pack the zip every day. I'd look into doing it but I'm not super confident I'd go about it the proper way.
Click to expand...
Click to collapse
For now, TWRP can detect when you are wiping your partition what tools it would has to use. I.e : if you choose to wipe data partition, system, etc.
And use the correct tool accordingly. But official version do not mount yet however f2fs partition.
The fstab is in the ramdisk, so contained yep in the boot.img. But there are few mount options, some may need to be activated in case of unstability
Khaon said:
For now, TWRP can detect when you are wiping your partition what tools it would has to use. I.e : if you choose to wipe data partition, system, etc.
And use the correct tool accordingly. But official version do not mount yet however f2fs partition.
The fstab is in the ramdisk, so contained yep in the boot.img. But there are few mount options, some may need to be activated in case of unstability
Click to expand...
Click to collapse
Thank you for your reply. Perhaps the best thing is to create a flashable zip to be run after ROM flash to install fstab.manta?
Also, FWIW, here's some sed commands to update your updater-script per the instructions in the OP:
Code:
sed -i 's/^mount("ext4".*\/system*/run_program\("\/sbin\/busybox", "mount", "\/system"); /' updater-script
sed -i 's/^format("ext4".*\/system*/run_program("\/sbin\/mkfs.f2fs", "\/dev\/block\/platform\/dw_mmc.0\/by-name\/system"); /' updater-script
b1g.p0ppa said:
Thank you for your reply. Perhaps the best thing is to create a flashable zip to be run after ROM flash to install fstab.manta?
Also, FWIW, here's some sed commands to update your updater-script per the instructions in the OP:
Code:
sed -i 's/^mount("ext4".*\/system*/run_program\("\/sbin\/busybox", "mount", "\/system"); /' updater-script
sed -i 's/^format("ext4".*\/system*/run_program("\/sbin\/mkfs.f2fs", "\/dev\/block\/platform\/dw_mmc.0\/by-name\/system"); /' updater-script
Click to expand...
Click to collapse
Hello I just added some executable java program that convert a rom script to be f2fs compatible.
Also, having less issues with lastest kernel build but I tried it on new roms. ROMs fully working so far and stable : liquidSmooth 3.1 & slimkat 4.9.
Before I was using CM11 M7 it was working but was encoutering some freezes/reboot- especially at the beginning - but then it was ok. I can not tell if this is still happening with cm rom.
I haven't test the pc program on windows if anyone could say it does work, thx!
EDIT : thank to @dust40; he told me the tool was working on Windows as well! Should work on mac too then i guess.
Well I successfully converted /data and cache to F2FS. I made the effort way more work than it had to be by preserving my data. WAY more work. Booted in recovery mode I tar'ed up /data to a exfat formatted usb-otg drive then ran the conversion. Ran into 'value too large for defined data type' errors from tar when extracting. I ended up extracting the tarball onto my workstation, deleting the file it crapped out on, tar'ing it all back up to the usb drive and re-running the extraction. Had to repeat this procedure a good dozen times and I ended up with messed up permissions on all my data. I don't suggest anyone try this because it would have taken much less time to just set up a fresh installation, but if you do here's some good commands to fix up permissions (TWRP's fix permissions command doesn't fix what I messed up). I found these commands at http://forum.xda-developers.com/showthread.php?t=2222297 but had to adjust them a little bit. The chown command has to be run when booted to android, the chmod commands can be run from either recovery or android. Reboot immediately after running. Best to run through adb shell than in an app on the tablet.
Code:
find /data/media/ -exec chown 1023,1023 {} \;
find /data/media/ -type d -exec chmod 775 {} \;
find /data/media/ -type f -exec chmod 664 {} \;
@Khaon, can you ask ktoonsez to compile 4.4.4 versions of the kernels? Latest OmniROM update for manta is 4.4.4 but will not boot with this kernel. And obviously I cannot run any other kernel as none others support F2FS. Thanks in advance! And thanks for putting this thread together. Without your good instructions I probably wouldn't have had the guts to convert this early.
One last thing, I can report that OmniROM works perfectly with /data and cache formatted as F2FS (once permissions are set right!). And since I preserved my data I have an apples to apples comparison of performance and it is noticeably faster and smoother!
kt-recovery stuck at splash screen
Hi,
I had originally posted this in ktmanta thread:
I have been running F2FS on cache+data for past 2 weeks and it works very well (still some strange system freezes, i will need to investigate further on that).
However, now, when i boot to recovery, screen stays stuck at splash screen showing "f2fs enabled by Ktoonsez..", and does not go anywhere else. i can still flash using adb, but clearly, it's less than convenient, and using twrp 2.7.10 is not an option, as it can't mount f2fs sdcard properly anyways.
with adb shell, i can see that all is mounted properly, f2fs or not, but obviously, it's less than ideal... i have attached /cache/recovery/log file .
Note: i connect usb cable 2 to 3 mn after waiting for splash screen to go away, and i pulled recovery log at that moment. this was also the only way to get out of this stuck mode, via 'adb reboot' command.
i also tried to re-flash recovery via fastboot, but that made no difference.
any help appreciated !
@ericp2 @b1g.p0ppa
Can you just try this recovery and tell me if you are running any issue? This is just last official twrp 2.7.1.0.
Just formated and installed a new ROM, ran into no issue, guess should be the same for you .
b1g.p0ppa said:
Well I successfully converted /data and cache to F2FS. I made the effort way more work than it had to be by preserving my data. WAY more work. Booted in recovery mode I tar'ed up /data to a exfat formatted usb-otg drive then ran the conversion. Ran into 'value too large for defined data type' errors from tar when extracting. I ended up extracting the tarball onto my workstation, deleting the file it crapped out on, tar'ing it all back up to the usb drive and re-running the extraction. Had to repeat this procedure a good dozen times and I ended up with messed up permissions on all my data. I don't suggest anyone try this because it would have taken much less time to just set up a fresh installation, but if you do here's some good commands to fix up permissions (TWRP's fix permissions command doesn't fix what I messed up). I found these commands at http://forum.xda-developers.com/showthread.php?t=2222297 but had to adjust them a little bit. The chown command has to be run when booted to android, the chmod commands can be run from either recovery or android. Reboot immediately after running. Best to run through adb shell than in an app on the tablet.
Code:
find /data/media/ -exec chown 1023,1023 {} \;
find /data/media/ -type d -exec chmod 775 {} \;
find /data/media/ -type f -exec chmod 664 {} \;
One last thing, I can report that OmniROM works perfectly with /data and cache formatted as F2FS (once permissions are set right!). And since I preserved my data I have an apples to apples comparison of performance and it is noticeably faster and smoother!
Click to expand...
Click to collapse
Glad you like the kernel running this, if I understood correctly, you wanted to back up the internal storage( so /data/media/0) and your apk folder to an exfat usb drive you mounted with otg? If the fs of this one was exfat that is probably the cause of your issues, I am not even sure our tablet nativly supports exfat( isn't a samsung fs that allows 32GB ++ partition size?). Lastest Omni kernel is booting I assume?
Khaon said:
@ericp2 @b1g.p0ppa
Can you just try this recovery and tell me if you are running any issue? This is just last official twrp 2.7.1.0.
Just formated and installed a new ROM, ran into no issue, guess should be the same for you .
Click to expand...
Click to collapse
Issue fixed. this version of TWRP starts correctly, and f2fs formatted sdcard can be listed, so i can again flash CM updates.
many thanks!

[DEV] Building a custom kernel and kernel modules for stock kernel

Since fire phone doesn't have a bootloader unlock at the moment. There is no point in building a custom kernel. But By building a kernel we can build kernel modules which work on the stock kernel. And yes you can load unsigned kernel modules without a problem since fire phone doesn't use tz apps to verify kernel modules like Samsung does.
Setup
Source
Download the fire phone sources for firmware 4.6.1 from here. And extract the platfrom.tar inside the archive to somewhere(KERNEL_DIR).
toolchain
You can use the android ndk from google, But it requires some setup. I'm using linaro toolchain from here. You can use compiler version 4.7, 4.8 or 4.9. Kernel I'm using (Firmware 4.6.3 - Linux 3.4-perf-g280c96c) is built with gcc-4.7. But I'm using this gcc-4.9. Download it, extract is somewhere(TOOLCHAIN_DIR) and add the $TOOLCHAIN_DIR/bin to your PATH. Theoretically you would be able to build the kernel on windows using Cygwin or MSYS tools but using Linux is better.
config
Connect your phone trough adb and run
Code:
adb pull /proc/config.gz
zcat config.gz > $KERNEL_DIR/kernel/qcom/3.4/.config
With this config you will run into some problems because of a missing "trapz_generated_kernel.h". I don't know if this is an auto generated file when they build android as a whole or amazon removed this explicitly(can they do that without violating GPL?). Anyway It looks trapz is some low level kernel debugging function(comment here if you know more about it). We can safely disable it. Open $KERNEL_DIR/kernel/qcom/3.4/.config in a text editor and change the lines
Code:
CONFIG_TRAPZ=y
CONFIG_TRAPZ_TP=y
CONFIG_TRAPZ_TRIGGER=y
CONFIG_HAVOK=y
to
Code:
#CONFIG_TRAPZ=y
#CONFIG_TRAPZ_TP=y
#CONFIG_TRAPZ_TRIGGER=y
#CONFIG_HAVOK=y
building
Now edit the $KERNEL_DIR/kernel/qcom/3.4/Makefile and add this changes
Code:
EXTRAVERSION = -perf-g280c96c
This is at the top of the makefile. If we don't add this, vermagic for the modules will differ from stock kernel and they won't load.
ARCH=arm
CROSS_COMPILE=arm-linux-gnueabihf-
Click to expand...
Click to collapse
Here arm-linux-gnueabihf- is my cross compiler frefix. Look in $TOOLCHAIN_DIR/bin/ to find it.
Now cd into $KERNEL_DIR/kernel/qcom/3.4/ and do
Code:
make
The build will fail a few times complaining about missing headers. Most of the time it's just
Code:
#include <myheader.h>
instead of
Code:
#include "myheader.h"
Edit the source file where the build fails and change <>s to ""s. (maybe android ndk ignores the difference and include the headers anyway)
After kernel compiles, we are good to go. We can use this kernel sources to build kernel modules for stock kernel.
Kernel modules
To build the kernel modules, we basically need two things. An approximate kernel source and the Module.symvers file from the original kernel. We can get the Module.symvers file by building the complete kernel as explained above or Just extract it from our stock kernel.
To extract the Module.symvers from the stock kernel, extract the boot.img file from firmware update image. Get mkbootimg tools from here compile it and run
Code:
unmkbootimg --kernel zImage ---ramdisk ramdisk.cpio.gz -i boot.img
After you get the zImage. Download extract-symvers script from here and run
Code:
python2 extract-symvers.py -B 0xc0008000 zImage > Module.symvers
place this file in $KERNEL_DIR/kernel/qcom/3.4/ (You still have to do the changes mentioned above in kernel config and building section run make in the $KERNEL_DIR/kernel/qcom/3.4 and intrupt it after few seconds)
Now you can build loadable modules against this source. Here is a hello world kernel module.
Code:
//hello.c
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/init.h>
static int __init hello_start(void)
{
printk("hello to the world from module");
return 0;
}
static void __exit hello_end(void)
{
printk("heloo exit");
}
module_init(hello_start);
module_exit(hello_end);
Code:
#Makefile
KERNEL_DIR=<your kernel dir>/kernel/qcom/3.4
obj-m := hello.o
PWD := $(shell pwd)
default:
$(MAKE) ARCH=arm CROSS_COMPILE=armeb-linux-gnueabi- -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
Put this files in a folder and run make in it. Change the paths and cross compiler prefix according to your setup. and run make.
After the build push the hello.ko to the phone.
Code:
adb push hello.ko /sdcard/
adb shell
su
cd sdcard
insmod hello.ko
run dmesg and you'll see the message.
I'm currently trying to build kexec module from hashcode's sources and USB OTG modules.
I'm attaching a few thing helped me do this.
since they have released this version of the fire os they have to provide the source code
see
http://www.gnu.org/licenses/gpl-faq.html#GPLRequireSourcePostedPublic
you have just shown that the source code they releases for the kernel does not match the one used to build the kernel. This means it is a clear violation of the gpl and amazon is in breach and can be sued.
on another note.
are the drivers for the nfc and camera compiled as a module or into the kernel?
They have yet to provide 4.6.3 and 4.6.4 kernel sources too.
I don't know exactly but in order for NFC and camera to work drivers are required and they are in fact compiled into the kernel.
The problem we currently have with NFC and camera is proprietary hal (hardware abstraction libraries) They are a part of Android and does not subject to GPL. Amazon changed the original android way how hal works and didn't release the sources!
by looking at the kernel drivers maybe we would be able to implement hal from scratch. But I don't see that intense dev support for fire phone. If you are up for it camera sources are at $KERNEL_DIR/kernel/qcom/3.4/drivers/media/platform/msm/camera_v2/
Major MAJOR respect for all of you making the Fire Phone even better!
@madushan1000
Could we do something like this to install a custom boot.img?
http://forum.xda-developers.com/optimus-l9/general/guide-install-custom-roms-locked-t3249828
I don't own this device but has anyone tried to see if kexec works?
spudowiar said:
I don't own this device but has anyone tried to see if kexec works?
Click to expand...
Click to collapse
Nope, I was working on it. But then I got a job. It will be sometime before I can start working on it again.
Could someone please provide the config extracted from /proc/config.gz?
I can't find this on CM11 rom for some reason.
Building the kernel now.
Some bugs are in the code and -Wall and gcc-wrapper.py escalate the warnings.
I wonder if those errors are there on purpose XD
helloworld.ko loaded successfully
I was able to execute kexec without anything. Just the binary.
Will keep you posted - this hacking might take a while to figure it all out.
I already have 3.4 kernel from the amazon sources.
I have the kexec userland program.
What is left is a loadable kexec kernel module (if that is possible at all).
removed
Okarin said:
Are we even sure those Amazon Kernel Sources are correct?
Those errors caught by the wrapper scripts are giving me the creeps.
Git the kexec_load.ko build.
Currently hands on insmod.
Phone doesn't do a reboot any longer:
insmod kexec_load.ko
init_module(0xb6e6c008, 408241, "") = -1 ENOENT (No such file or directory)
write(2, "insmod: init_module '/sdcard/kex"..., 79insmod: init_module '/sdcard/kexec_load.ko' failed (No such file or directory)
) = 79
munmap(0xb6e6c000, 409600) = 0
mprotect(0xb6f8c000, 4096, PROT_READ|PROT_WRITE) = 0
mprotect(0xb6f8c000, 4096, PROT_READ) = 0
close(0) = 0
close(1) = 0
close(2) = 0
futex(0xb6f6cd74, FUTEX_WAKE_PRIVATE, 2147483647) = 0
munmap(0xb6f8c000, 4096) = 0
exit_group(-1) = ?
First goal is to get module loaded.
Goal reached:
kexec_load 27813 0 - Live 0x00000000 (O)
procfs_rw 12770 0 - Live 0x00000000 (O)
wlan 3793980 0 - Live 0x00000000 (O)
Shouldn't be functional at all..
I disabled some function calls just to get the module loaded.
The missing symbols are:
soft_restart
arch_kexec
machine_shutdown
And the version I use does some insane function hooking ..
More rework is needed.
[email protected]:/data/local # ./kexec /sdcard/vmlinux
kernel: 0xaf12d008 kernel_size: 7e1354c
unrecoverable error: could not scan "/proc/device-tree/": No such file or directory
<6>[ 97.681256] Kexec_load: Replacement... :
<6>[ 97.681344] kexec_load : my_syscall_table : c0106244
<6>[ 97.681405] kexec_load : kexec_load before replacement : c01b346c
<6>[ 97.681480] kexec_load : kexec_load after replacement : bf3a5650
<6>[ 97.681546] kexec_load : reboot before replacement : c01a83f0
<6>[ 97.681616] kexec_load : reboot after replacement : bf3a6348
<6>[ 97.681675] Kexec_load: End replacement... :
<6>[ 202.694691] Kexec: - Starting kexec_load...
<6>[ 202.694849] Kexec: - ---- kexec_load - result : '0'
It gets better:
255|[email protected]:/data/local # ./kexec --dtb=/sdcard/zImage-dtb /sdcard/vmlinux
kernel: 0xaf1b1008 kernel_size: 7e1354c
kexec-zImage-arm : dtb.img BEFORE CUT : Start : '0xae66f008' - Length : '0xb411e9' - End : '0xaf1b01f1'
Segmentation fault
More tomorrow.
Click to expand...
Click to collapse
Where are you getting your kexec module sources from? BTW try using the original amazon kernal binary the phone is shipped with (we are sure it works). Don't use the custom kernel for the kexec tests (We don't know the custom kernel actually works)
madushan1000 said:
Where are you getting your kexec module sources from? BTW try using the original amazon kernal binary the phone is shipped with (we are sure it works). Don't use the custom kernel for the kexec tests (We don't know the custom kernel actually works)
Click to expand...
Click to collapse
Here is the thread I used as a starting point.
I will put up my "fork" on github after I get permission to do that
The userland part build like a charm once I took the compiler you recommended.
The kernel-module was tricky because the whole thing is modded like hell.
To be able to load I had to comment out some hard coded addresses and the calls to unresolvable symbols.
removed
Okay the kernel gets loaded.
But
kexec -e shuts off the device.
strace doesn't help.
On the plus side:
Devices are shutdown
Look promising
I need a way to tail dmesg ...
Okay a lot of digging around and I found out that the reboot syscall doesn't work properly..
It doesn't look like it hits the kexec_module it looks more like it hits the actualy sys_reboot
Okay reboot syscall hits my reboot-hook.
But the softreboot doesn't work now.
Okay there is some kind of watchdog runnig which doesn't like my kexec.
I need to kill it - that should happen tomorrow.
removed
I hit the same wall when I tried to isolate the kexec code from the kernel itself to a module. I stopped working on it because I lacked the time. BTW the error you are facing now
<3>[ 80.580644] BUG: scheduling while atomic: kexec/4067/0x00000002
Click to expand...
Click to collapse
is because memory allocator is trying to switch threads while you are in a syscall. it's because of lines like this
image = kzalloc(sizeof(*image), GFP_KERNEL);
Click to expand...
Click to collapse
Try changing GFP_KERNEL to GFP_ATOMIC. Other than that, I have another suggestion. Try to get the kernel to run in a single core mode before running kexec code. This might simplify things. I don't know how to do this though.
madushan1000 said:
I hit the same wall when I tried to isolate the kexec code from the kernel itself to a module. I stopped working on it because I lacked the time. BTW the error you are facing now
is because memory allocator is trying to switch threads while you are in a syscall. it's because of lines like this
Try changing GFP_KERNEL to GFP_ATOMIC. Other than that, I have another suggestion. Try to get the kernel to run in a single core mode before running kexec code. This might simplify things. I don't know how to do this though.
Click to expand...
Click to collapse
The atmic error is gone now. It went away after I disabled the watchtog.
smp_disable() is what you are looking for - but this causes the system to hard_reboot ATM XD
what happens if you kill every userlevel program before smp_disable()?
removed
#define tomorrow
Okay .. I worked out the preemption thing.
At least it does something.
Still a black screen and the MSM_WATCHDOG is a ***** again.
It needs to be suspended .. at least that what I get from the code I read here.
If I remove the driver too early the output in /proc/kmsg stops ..
If I try to remove it too late ... well it causes a resched while atomic.

Fixing stock kernel sources for H30-U10

Github repo: https://github.com/kernel-killer/android_kernel_huawei_h30u10
All changes I made since last commit are in my private repo.
Install packages (Not sure if it's right):
Code:
sudo apt-get install build-essential
Note: Please run ./mk ckeck-env to verify your build enviroment (Newer GNU MAKE will fail but the code compiles the same with new or older version)
Build:
Code:
./mk bm_new k
Testing your new kernel:
Download both attachments (KernelSwapper and BootimgRestore).
Append headers from stock kernel to zImage (which can be found at ./out/target/product/huawei82_cwet_kk/obj/KERNEL_OBJ/arch/arm/boot/zImage)
In KernelSwapper update 'kernel' with your own generated zImage rename it to 'kernel' and replace it inside zip.
In BootimgRestore replace 'boot.img' with your current ROM's boot.img in case that something goes wrong (e.g.: Phone not booting).
Copy the two new zips into phone's memory (or SD card) and flash KernelSwapper.
===== Reserved #1 =====
Thanks for the awesome work KK. I am on CM 13 3.4.67 kernel. Can i use this or do i have to be in stock rom for testing the kernal?
Sent from my Honor 3C using Tapatalk
---------- Post added at 06:12 AM ---------- Previous post was at 06:02 AM ----------
Update : Flashed the kernel, phone booted but felt laggish while using. I am still testing, will let you know what happens
Sent from my Honor 3C using Tapatalk
karkeankit said:
Thanks for the awesome work KK. I am on CM 13 3.4.67 kernel. Can i use this or do i have to be in stock rom for testing the kernal?
Sent from my Honor 3C using Tapatalk
---------- Post added at 06:12 AM ---------- Previous post was at 06:02 AM ----------
Update : Flashed the kernel, phone booted but felt laggish while using. I am still testing, will let you know what happens
Sent from my Honor 3C using Tapatalk
Click to expand...
Click to collapse
Yes, I'm sure that the kernel has multiple bugs. The phone may feel laggish because there is enabled low-level kernel debugging over UART.
Thank you for testing...
kernel.killer said:
Yes, I'm sure that the kernel has multiple bugs. The phone may feel laggish because there is enabled low-level kernel debugging over UART.
Thank you for testing...
Click to expand...
Click to collapse
You are welcome, wishint you good luck for further development
Sent from my Honor 3C using Tapatalk
Hi, tnx for The kernel
if i Update my kernel VPN bug in CM12.1 will fix?
hamadk said:
Hi, tnx for The kernel
if i Update my kernel VPN bug in CM12.1 will fix?
Click to expand...
Click to collapse
Nope, it's ROM bug not a kernel bug plus I have released only development preview version which has enabled many debugging options and it may be quite buggy.
Thanks, but can this process led to a suitable kernel for CM13?
Does this kernel fixes the video playback problem and the recording problem?(Can't play or capture 720p videos, screen recorder works fine, just the camera.)
Sent from my Huawei Honor 3C using XDA Labs
Lumpbloom7 said:
Does this kernel fixes the video playback problem and the recording problem?(Can't play or capture 720p videos, screen recorder works fine, just the camera.)
Sent from my Huawei Honor 3C using XDA Labs
Click to expand...
Click to collapse
http://forum.xda-developers.com/showpost.php?p=67848925&postcount=8
mhxygh said:
Thanks, but can it this process led to a suitable kernel for CM13?
Click to expand...
Click to collapse
Aim of this project is to make stock kernel sources stable for KitKat ROMs (It is originally for KK) but somebody else may patch them for CM 13. I am not working on this nor I'll do.
Will you be adding extra CPU governors and IO schedulers along with kernel level wakeups for double tap waking?
I was wondering who else is developing kernel 3.10.XX for this device ?
Ms_Julia said:
I was wondering who else is developing kernel 3.10.XX for this device ?
Click to expand...
Click to collapse
Actually, nobody is working on 3.10.X kernel. And I'm rather focusing on LineageOS for now.
What is the defconf for our device in kernel source
imranpopz said:
What is the defconf for our device in kernel source
Click to expand...
Click to collapse
This should include most configs
Code:
/* Mediatek common */
./mediatek/config/common/autoconfig/kconfig/AEE
./mediatek/config/common/autoconfig/kconfig/USER
./mediatek/config/common/ProjectConfig.mk
/* MT6582 common */
./mediatek/config/mt6582/autoconfig/kconfig/platform
./mediatek/config/mt6582/ProjectConfig.mk
/* h30u10 device specific */
./mediatek/config/huawei82_cwet_kk/autoconfig/kconfig/project
./mediatek/config/huawei82_cwet_kk/ProjectConfig.mk
kernel.killer said:
This should include most configs
Code:
/* Mediatek common */
./mediatek/config/common/autoconfig/kconfig/AEE
./mediatek/config/common/autoconfig/kconfig/USER
./mediatek/config/common/ProjectConfig.mk
/* MT6582 common */
./mediatek/config/mt6582/autoconfig/kconfig/platform
./mediatek/config/mt6582/ProjectConfig.mk
/* h30u10 device specific */
./mediatek/config/huawei82_cwet_kk/autoconfig/kconfig/project
./mediatek/config/huawei82_cwet_kk/ProjectConfig.mk
Click to expand...
Click to collapse
Replace Device Name with the configuration file found at:
Source/arch/arm/configs
It's written in this way something_DeviceCodename_user_defconfig
I need for the above step.. ☝☝☝
imranpopz said:
Replace Device Name with the configuration file found at:
Source/arch/arm/configs
It's written in this way something_DeviceCodename_user_defconfig
I need for the above step.. ☝☝☝
Click to expand...
Click to collapse
Well... This is Mediatek, DO NOT expect the sources to look nice. The configs are scattered through ./mediatek subdirectories, *.mk files are parsed and configs are assembled during build. Unfortunatelly, even if you manually assemble .config you will NOT be able to build the kernel. It is full of dirty hacks (Mediatek) and just typing "make" won't work, build will break.
Build:
Code:
$ git clone https://github.com/kernel-killer/android_kernel_huawei_h30u10.git
$ cd android_kernel_huawei_h30u10
$ export ARCH=arm && export ARCH_MTK_PLATFORM=mt6582 && export TARGET_PRODUCT=huawei82_cwet_kk
$ export CROSS_COMPILE=/path-to-your-toolchain/.../bin/arm-linux-androideabi-
$ ./mk n k
Code:
$ ./mk -h
Usage: (makeMtk|mk) [options] project actions [modules]
Options:
-t, -tee : Print log information on the standard-out.
-o, -opt=bypass_argument_to_make
: Pass extra arguments to make.
-h, -help : Print this message and exit.
Projects:
one of available projects.
Actions:
listp, listproject
: List all available projects.
check-env : Check if build environment is ready.
check-dep : Check feature dependency.
n, new : Clean and perform a full build.
c, clean : Clean the immediate files(such as, objects, libraries etc.).
r, remake : Rebuild(target will be updated if any dependency updats).
mrproper : Remove all generated files + config + various backup files in Kbuild process.
bm_new : "new" + GNU make's "-k"(keep going when encounter error) feature.
bm_remake : "remake" + GNU make's "-k"(keep going when encounter error) feature.
mm : Build module through Android native command "mm"
mma : Build module through Android native command "mma"
emigen : Generate EMI setting source code.
nandgen : Generate supported NAND flash device list.
codegen : Generate trace DB(for META/Cather etc. tools used).
drvgen : Generate driver customization source.
custgen : Generate customization source.
javaoptgen : Generate the global java options.
ptgen : Generate partition setting header & scatter file.
bindergen : Generate binder related information
sign-image : Sign all the image generated.
encrypt-image : Encrypt all the image generated.
update-api : Android default build action
(be executed if system setting or anything removed from API).
check-modem : Check modem image consistency.
upadte-modem : Update modem image located in system.img.
modem-info : Show modem version
gen-relkey : Generate releasekey for application signing.
check-appres : Check unused application resource.
sdk : Build sdk package.
win_sdk : Build sdk package with a few Windows tools.
banyan_addon : Build MTK sdk addon.
banyan_addon_x86 :Build MTK sdk x86 addon.
cts : Build cts package.
bootimage : Build boot image(boot.img).
cacheimage : Build cache image(cache.img).
systemimage : Build system image(system.img).
snod : Build system image without dependency.
(that is, ONLY pack the system image, NOT checking its dependencies.)
recoveryimage : Build recovery image(recovery.img).
secroimage : Build secro image(secro.img).
factoryimage : Build factory image(factory.img).
userdataimage : Build userdata image(userdata.img).
userdataimage-nodeps
: Build userdata image without dependency.
(that is, ONLY pack the userdata image, NOT checking its dependencies.)
dump-products : Dump products related configuration(PRODUCT_PACKAGE,PRODUCT_NAME ect.)
target-files-package
: Build the target files package.
(A zip of the directories that map to the target filesystem.
This zip can be used to create an OTA package or filesystem image
as a post-build step.)
updatepackage : Build the update package.
dist : Build distribution package.
Modules:
pl, preloader : Specify to build preloader.
lk : Specify to build little kernel.
md32 : Specify to build DSP md32.
tz, trustzone : Specify to build trusted execution environment.
k, kernel : Specify to build kernel.
dr, android : Specify to build android.
NULL : Specify to build all components/modules in default.
k <module path>
: Specify to build kernel component/module with the source path.
dr <module name>
: Specify to build android component/module with module name.
Other tools:
prebuilts/misc/linux-x86/ccache/ccache -M 10G
: Set CCACHE pool size to 10GB
Example:
./mk -t e1k emigen
: Generate EMI setting source code.
./mk -o=TARGET_BUILD_VARIANT=user e1k n
: Start a user mode full build.
./mk listp : List all available projects.
./mk e1k bootimage
: Build bootimage for e1k project.
./mk e1k bm_new k
: Build kernel for e1k project.
./makeMtk e1k c,bm_remake pl k
: Clean & Build preloader and kernel for e1k project.
./makeMtk e1k n k kernel/xxx/xxx
: Build(full build) kernel component/module
under the path "kernel/xxx/xxx" for e1k project.
./makeMtk e1k r dr Gallery
: Rebuild android module named Gallery for e1k project.
./makeMtk e1k mm packages/apps/Settings
: Change Directory to packages/apps/Settings and execute "mm"
./makeMtk e1k mma packages/apps/Settings
: Change Directory to packages/apps/Settings and execute "mma"
Edit:
I fixed the sources, so menuconfig can be used.
Apply patch:
Code:
$ git am 0001-Fix-build-using-make-command.patch
Build:
Code:
$ cd kernel && export ARCH=arm && export ARCH_MTK_PLATFORM=mt6582 && export TARGET_PRODUCT=huawei82_cwet_kk
$ export CROSS_COMPILE=/path-to-your-toolchain/.../bin/arm-linux-androideabi-
$ make -C $(pwd) O=output h30u10_defconfig menuconfig
$ make -C $(pwd) O=output
Append MTK headers:
Code:
$ ../mediatek/build/tools/mkimage output/arch/arm/boot/zImage KERNEL > output/zImage
*Note: I recommend using AOSP arm-linux-androideabi-4.9 toolchain.
Getting cp: cannot stat 'out/target/product/huawei82_cwet_kk_kernel.log
Make [1]: [kernel ] error 1
Make: *** [remake] error 2

hiddenapi crashes while building LineageOS 16.0

Hi,
I'm trying to build a LineageOS 16.0 ROM for my device Sony XPeria Z5 compact (suzuran)...
...but, unfortunately I failed with two crashes, that I can't fix:
While building this rom, first hiddenapi crashes at about 87% build progress with a signal 4 and, when commenting this out in the build process, profman crashes with the same error! This is because in both tools the "inserting in an unordered set" failed reproducible!!
I've seperated the call to hiddenapi with all parameters and tried to run this program outside the build process. This is the output:
Code:
/home/bernhard/los16/out/host/linux-x86/bin/hiddenapi --light-greylist=/home/bernhard/los16/out/target/common/obj/PACKAGING/hiddenapi-light-greylist.txt --dark-greylist=/home/bernhard/los16/out/target/common/obj/PACKAGING/hiddenapi-dark-greylist.txt --blacklist=/home/bernhard/los16/out/target/common/obj/PACKAGING/hiddenapi-blacklist.txt --dex=/home/bernhard/los16/out/target/common/obj/JAVA_LIBRARIES/android.test.base_intermediates/dex-hiddenapi/classes.dex
Illegal instruction (core dumped)
kern.log:
Oct 2 14:50:12 arbeit-lin-win kernel: [13163.700934] perf: interrupt took too long (2505 > 2500), lowering kernel.perf_event_max_sample_rate to 79750
Oct 2 14:51:44 arbeit-lin-win kernel: [13256.081375] do_trap: 10 callbacks suppressed
Oct 2 14:51:44 arbeit-lin-win kernel: [13256.081379] traps: hiddenapi[21659] trap invalid opcode ip:55cdbedec8e9 sp:7ffc0e81ccf0 error:0 in hiddenapi[55cdbede6000+c000]
Oct 2 14:54:11 arbeit-lin-win kernel: [13403.173464] traps: hiddenapi[23647] trap invalid opcode ip:559ce87c18e9 sp:7ffc3c297090 error:0 in hiddenapi[559ce87bb000+c000]
My build computer is a 64bit AMD Phenom 9650 Quad-Core with 16 gb ram running xubuntu 16.04 LTE
Fixed it by
Code:
export CPU_SSE42=false
in my .bashrc file.

Categories

Resources