Application:SBromwichKernel

From WebOS Internals
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).


Tux with Warning.png
This kernel is INTENDED FOR ALPHA TESTING ONLY.

If you are looking for information on alternate stable kernels,

Application:UberKernel


Patches applied for 1.4.1-75

  • Pulled prcm patches to help test if this is causing an issue for warthog

Patches applied for 1.4.1-63

  • defconfig patches tweaked to avoid patch collision with screenstate governor settings
  • Makefile patched to use cs2010q1 gcc compiler from CodeSourcery

Patches applied for 1.4.1-61 ("tebbo")

  • Tweaked prcm patches to extend battery life.

Patches applied for 1.4.1-28 ("nt4cats")

  • Applied patches to remove debug settings for:
    • board-sirloin-headset-detect.c.diff
    • omap_fb.c.diff
    • omap_misc_hsuart.c
    • pm_cpuidle.c.diff

This may reduce the "high load on wakeup" that some people are seeing.

Patches applied for 1.4.1-26 ("yoda")

  • wfi instruction re-enabled after several sources confirmed it did not hinder
  • Tweaked timeouts for prcm bitbanging, particularly with DOM_PER to see if that reduces battery drain at the expense of (possibly) more hangs coming out of suspend.

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

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.