Application:SBromwichKernel
Jump to navigation
Jump to search
The sbromwich series of kernels are the kernels I run on my phone with all current webos-internals testing patches applied, plus my patches, plus my kernel configuration.
The kernels are currently available at http://ipkg.preware.org/feeds/webos-kernels/testing/1.4.1.1/ and can be added using any standard package manager in the standard format (deducing this is left as an exercise for the reader).
Patches applied for 1.4.1-25 ("adric")
- wfi instruction on prcm fail removed to validate if this is a regression causing battery drain.
Patches applied for 1.4.1-24 ("jangofett")
- Reduce number of scheduling calls made to try to reduce battery drain. This may have an adverse affect on wake from suspend.
Patches applied for 1.4.1-23 ("bobafett")
- Debug settings removed from default kernel build.
- Compile kernel with explicit cortex-a8 tuning flags for gcc.
- Tweak prcm power manager to more explicitly wait for power set calls to return, remove debug cruft, and add Wait For Interrupt instruction if a prcm setting attempt fails.
- Enable preempt kernel.
Known problems
- Pre can take some extra time to respond to certain activities, especially when waking up; lags of up to 2 seconds can be experienced on wakeup. The alternative is a reboot, which will take even longer.
Improvements
- User interactivity latency should be lower (time to respond to keypresses, etc).
- Fewer powerd wakeups allowing the system to sleep longer.
Warnings
- My patch makes the kernel boot at 800MHz. Run this kernel at your own risk. Not compliant with point 6 of http://forums.precentral.net/webos-internals/241355-next-generation-kernel-development-packaging.html .
- anticipatory io scheduler recommended.
- Install SmartReflex patches at your own risk. SmartReflex is not expected to work.
- Some users have reported increased battery usage when running this kernel.
Settings used with this kernel
I use the following event.d script:
description "Local tuning modes" start on stopped finish stop on runlevel [!2] console none script # Set governor echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor # Set min frequency echo 250000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq # Set max frequency echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq # Set io scheduler to anticipatory echo anticipatory > /sys/block/mmcblk0/queue/scheduler # Powertop Suggestion: increase the VM dirty writeback time from 5.00 to 15 # seconds. 0.50s works better on flash as it has slow writes. Needs more testing. echo 50 > /proc/sys/vm/dirty_writeback_centisecs # Use YeaH TCP as it's fairer over wireless echo yeah > /proc/sys/net/ipv4/tcp_congestion_control # Don't cache route metrics since we're mobile echo 1 > /proc/sys/net/ipv4/tcp_no_metrics_save # Ramp up the tx/rx network buffers in case we get bursty echo 1048576 > /proc/sys/net/core/rmem_max echo 1048576 > /proc/sys/net/core/wmem_max echo 3000 > /proc/sys/net/core/netdev_max_backlog nohup /usr/local/bin/pt.pl > /dev/null 2>&1 & /usr/sbin/iptables -D INPUT -i eth0 -p tcp --sport 5222 -s 205.140.203.0/24 -j ACCEPT > /dev/null 2>&1 /usr/sbin/iptables -I INPUT -i eth0 -p tcp --sport 5222 -s 205.140.203.0/24 -j ACCEPT echo 5 > /proc/sys/vm/laptop_mode end script # end of file
In addition, I am using my naive perl scheduler at http://www.fop.ns.ca/pre/pt/pt.pl to manage the CPU frequency.