Thursday 22 September 2011

Maverick September, Linux Kernel 2.6.31.14.26

New Linux release with a new kernel (2.6.31.14.26) with the following fancy updates:
  • Reinstated reservation of framebuffer and GPU memory due to quirks in the Linux kernel limiting the amount of DMA-capable memory you can allocate in a single block (and a lack of contiguous memory causing a crash rather than returning an error and letting drivers work around it). This means systems which were getting the full 512MB of memory in the last update will now be getting 448MB again. Sorry. We will revisit this again in a later kernel revision.
  • Fixed the "HDMI display goes into blank and never comes out unless you hotplug the HDMI cable" issue, which was down to overly aggressive power management.
  • Align framebuffer stride to 32 bytes to allow it to be GPU accelerated reliably (Z430 only)
  • Mainline: pull in unwinding support for div0 (now we can see what causes the Wireless Div0)
  • Mainline: pull in an optimization for copy_page
  • Don't wait to run the HDMI hotplug handler, and don't turn off the HDMI chip to solve an issue in particular with the Samsung SyncMaster E1920 which didn't like it when we did either.
  • HDMI now defaults to using IT modes instead of CEA modes where reasonable duplicates existed (tech: siihdmi.useitmodes=1 by default, siihdmi.useitmodes=0 for old behavior). This should make sure that if your TV does it by the specifications, most people should now have "underscanned" modes instead of "overscanned" modes. Also fixes a ton of very badly designed TVs.
  • "siihdmi.seventwenty" and "siihdmi.teneighty" options to the HDMI module now run through an extended list of possible modes, rather than restricting to exactly 1280x720 or 1920x1080 - now the switches are slightly misnamed as they will find the nearest native mode to these resolutions (such as 1360x768 which is a common plasma panel size) if the monitor reports them as preferred. This means most people won't need to disable siihdmi.seventwenty to get native panel resolution. 1080p now equals 1440x900, 1680x1050 or 1920x1080 if your panel supports it. For televisions which usually report exactly 720p or 1080p the behavior is absolutely unchanged, and if none of the native modes are found, it will pick 720p or the closest to the preferred mode (in case it was culled for being an incompatible mode) as before.
  • GPU kernel driver simplified and optimized
  • BFS scheduler patched in, PREEMPT disabled, CONFIG_HZ tweaked for i.MX timers. Gives us some performance back. CPU frequency driver disabled (locked to "performance") due to the driver being rather flakey. Smartbook battery life should be only minimally affected.
  • SPI NOR works again (thanks BoundaryDevices)
  • SGTL5000 audio is now a little more efficient (thanks BoundaryDevices)
Driver updates
  • Xorg driver: PictOpAdd, PictOpIn blend modes
  • Xorg driver: less memory hungry, more efficient (code size) allocation of memory
  • Xorg driver: Xv optimizations.
  • GPU: OpenVG: should now work without crashing all the time
  • GPU: EGL: Some texture/glReadPixels corruption bugs fixed (glcompbench now runs without corrupted textures, for example, but FSL 3DMMP_x still has garbage)
Multimedia
  • MM: multimedia via GStreamer - MPEG4 (Standard, H.264, VC-1), MPEG2 video acceleration.
  • MM: mfw_v4lsink to use IPU overlay for best performance
  • MM: mfw_xvimagesink for optimized Xv performance with reduced buffer copying.
  • MM: no requirement for any binary codec drivers (all opensource, ask if you want it..)
  • NOTE: NO audio codecs are included. As we do not license MP3 or AAC formats, your use of these codecs is your own responsibility.. If Totem or another GStreamer capable media player asks you to install new codecs, Genesi is not responsible for the quality of these codecs, and cannot assist users in installation of these codecs.
Known Issues:

  • MM: mfw_v4lsink will not work properly with siihdmi.teneighty=1 - this is a bandwidth issue and cannot be fixed. It might work fine doing windowed playback at 720p or less, though, your mileage may vary (wildly). Note that the MX51 is not rated for video playback above WXGA. You will need to run "gstreamer-properties" and set your video sink to "mfw_xvimagesink" to get around this. Note that mfw_v4lsink does not show anything when you click "Test" here.
  • MM: mfw_xvimagesink has a green line at the bottom in fullscreen (and perhaps Windowed mode too). Performance is adequate for videos less than 720p, for 720p and above there may be a few frame skips. This is actually a display driver bug combined with a limitation of the GPU (I420 and NV12 video must be converted to YUY2 using the CPU before blitting). Also there may be visible tearing. An updated OpenGL-based video renderer is in the works.
  • Note the i.MX51 is not rated to accelerate video above 720p.
  • Wireless driver still throws div0's at random intervals.
  • Performance in X.org Compositing window managers (Metacity for example) is somewhat sluggish in general (although window dragging is much, much faster). Compositing is disabled by default.
  • Firefox 3.6.22 is shipped by default but Mozilla don't have a "First Run" page for it, so the first time Firefox is started there will be a rather pretty "404" page telling you that you could upgrade to Firefox 6 or 7 - unfortunately this is not available at this time (Genesi do not plan to make it available for Maverick).
  • GNOME background switching in the Appearance panel seems like it locks the system, but it's just slow. An updated version of "libpixman" is required to solve this. We will make this available as soon as it completes testing (2.23).
  • GNU libc memory copies and string handling is not optimized for modern ARM processors. Genesi has a solution and it will be made available as soon as it completes testing (imx-libc-neon)
  • The updates.efikamx.info package repository is ridiculously out of date. Will be fixed shortly and March/May/July users can just update at that point without reinstalling..
  • Some source code is not available on GitHub - please just mail me and I'll send you a copy while we work this out.