Sunday, 10 June 2012

Experimental Nexus S Kernel (3.0.34_r1) release

Changelog.

As 3.0.29_r1 stable with the following changes:

  • Voodoo Sound v10
  • Merged to 3.0.34 from kernel.org
  • Compiled using a Newlib based bare metal GCC 4.6.3 toolchain, config here if anyone interested.
  • Some experimental compiler optimisations applied to Makefile: KBUILD_CFLAGS which increase benchmarked performance: -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block.
  • Optimised vfp code compilation: KBUILD_AFLAGS -mfpu=neon
  • Optimised PVR code compilation: -O2 instead of -Os

    Known issues:

    • None

    Available here.

    3 comments:

    1. Comment from a user at xda: http://forum.xda-developers.com/showthread.php?p=27243171

      ReplyDelete
    2. Hi,

      I just flashed this kernel and noticed when reading your options used to compile the kernel, this line stood out: "--with-tune=cortex-a9".

      Shouldn't that be "cortex-a8" and not "cortex-a9" since the Nexus S uses the Samsung Exynos 3110 and not the Samsung Exynos 4xxx series which uses Cortex A9?

      Thanks,
      deltatux

      ReplyDelete
    3. The GCC config is not the options used to compile the kernel, those are the default values compiled into the toolchain to be used if nothing else is specified.

      For example, by default, assuming the makefile doesn't override it, that toolchain will pass -mtune=cortex-a9 -mfpu=neon -march=armv7-a when building.

      I use the toolchain against cortex-a9 targets (Pandaboard) more than cortex-a8, so my default is sane for my usage.

      When the kernel is compiled, -mtune and -mfpu are not passed at all which is why I add -mtune=cortex-a8 -mfpu=neon here: https://github.com/thalamus/android-kernel/commit/265dd2ee3757c82a518ee35cd5379cb48d46df2f

      Also, just for info, compiling something with -mtune=cortex-a9 -march=armv7-a means it is tuned for Cortex A9, but will run on any ARM v7 CPU.

      Also, another point of interest, when I was testing different compiler optimisations on hummingbird, I found that using -mcpu=cortex-a8 (which compiles specifically for that cpu) actually hurt performance as opposed to -mtune=cortex-a8. Go figure.

      ReplyDelete