Kernel Log: Coming in 2.6.32 (Part 2) - Graphics
by Thorsten Leemhuis
Earlier this month, Linus Torvalds released 2.6.32-rc6 – due to the Kernel Summit, RC6 was not released the usual week after RC5, but two weeks after. As usual at this point in the development cycle, mostly minor patches have been merged over the past few days to avoid making changes that might introduce new bugs in the three to six weeks that remain until the final release of Linux 2.6.32.
Having looked at the network subsystem changes in the previous issue, the Kernel Log will now discuss the most important advancements in the field of graphics hardware support. Some of these changes have probably been eagerly awaited by many users since AMD resumed closer cooperation with the open source developers.
3D and KMS for Radeon
The kernel and its Direct Rendering Manager (DRM) will now offer 3D support and kernel-based mode setting (KMS) for AMD's series R600 and R700 GPUs. These are used in the Radeon series 2000, 3000 and 4000 models – which includes most of the Radeon graphics cards sold in the past couple of years as well as various AMD series 700 motherboard chip-sets.
For the 3D support and KMS to function, however, suitable (developer) versions of Libdrm and Mesa 3D as well as Radeon graphics drivers for X.org need to be installed. Compiling this software stack is a task for advanced users – however, the Fedora project plans to provide all the necessary components in an experimental package with Fedora 12, which is scheduled for release in mid November.
The Radeon KMS will also offer basic support for activating TV outputs. While the KMS driver for Intel graphics chips already offered this feature, it now supports a greater number of SDVO chips and more of their respective features (1, 2, 3).
From version 2.6.32, the Intel KMS code will also compress the frame buffer, which reportedly reduces power consumption by up to 0.5 watts; in addition, the new "Dynamic Clock Frequency Control" feature is to further reduce power consumption by reducing the LCD refresh rate, the memory's self refresh and the clock rate to prolong notebook battery life. The Intel driver now handles the graphics memory more efficiently, (1, 2) and will attempt to re-initialise crashed GPUs.
The kernel hackers have also integrated the VGA arbitration patches (1, 2, documentation). In systems with several graphics cards, the patches cooperate with X Servers from version 1.7 to ensure that the respective graphics card will actually receive the VGA commands sent to it by the X Server – which reportedly allows much more flexibility when implementing multi-seat environments.
Further changes to the kernel code responsible for graphics support:
- The "video=" parameter can now be used for setting a specific output screen resolution for individual monitors, or all monitors, in the KMS code.
- The firmware previously tied in with the code for Radeon drivers has been shifted into separate files and will from now on be loaded using the firmware loader. The developers also made a similar change to the driver code for Matrox graphics cards.
- A new addition is the frame buffer driver for Qualcomm MSM/QSD SoCs, which are used in devices like the HTC Dream (aka T-Mobile G1, aka ADP1).
- The developers have reworked the code paths used for initialisation by the kernel's Radeon drivers. This is intended both to facilitate maintenance and improve suspend and resume behaviour – the relevant commits are listed at the end of this article. These driver maintenance measures should also simplify the merging of several KMS code segments for AMD and Intel GPUs.
- The frame buffer driver for VIA graphics hardware now also supports the VX855 chip-set. Furthermore, the kernel hackers have rewritten the VIA driver's 2D engine.
- The new tracepoint support offers enhanced DRM code monitoring for Intel's current graphics chip-sets.
- The developers say they have also fixed numerous bugs with Intel series 8xx chip-sets that have occurred since GEM was introduced in 2.6.27.
- The KMS code for Radeon graphics hardware now supports Surround View – which involves running a Radeon graphics card in parallel with the chip-set graphics.
Many further minor, but by no means insignificant, changes can be found in the list below. Like many of the references in the text above, the links point to the relevant commits in the web front end of the Git branch at kernel.org Linus Torvalds uses for maintaining the kernel sources. There, the commit comments and the patches themselves provide extensive further information on the respective changes.
- Add G33 series in VGA hotplug support category
- agp/intel: Add B43 chipset support
- davinci: fb: Frame Buffer driver for TI DA8xx/OMAP-L1xx
- drm: Add more standard TV properties.
- drm: Add the basic check for the detailed timing in EDID
- drm/edid: Fix standard timing parse for EDID <= 1.2
- drm/edid: Ignore bad standard timings.
- drm: Enable drm drivers to add drm sysfs devices.
- drm/i915: add B43 chipset support
- drm/i915: add FIFO watermark support for G4x
- drm/i915: disable powersave feature for Ironlake currently
- drm/i915: do dynamic clock freq control only in kernel modesetting
- drm/i915: Fix FDI M/N setting according with correct color depth
- drm/i915: fix startup hang on some non-mobile platforms
- drm/i915: force mode set at lid open time
- drm/i915: framebuffer compression for GM45+
- drm/i915: generate a KMS uevent at lid open/close time
- drm/i915: Ironlake suspend/resume support
- drm/i915: Save and restore the GM45 FBC regs on suspend and resume.
- drm/i915: Support IGD EOS
- drm/kms: add a function that can add the mode for the output device without EDID
- drm/kms: Add the default mode table
- drm/kms: fix kms helper license + Kconfig
- drm/kms/i915: Add the default mode for CRT output without EDID
- drm/kms/radeon: make kms default a runtime option
- drm/mode: add the CVT algorithm in kernel space
- drm/mode: add the GTF algorithm in kernel space
- drm/mode: get the modeline for standard timing in EDID by using CVT/GTF
- drm/r128: Use request_firmware() to load CCE microcode
- drm/radeon/kms: add 32/64 ioctl support.
- drm/radeon/kms: add common lvds modes in the ddc case
- drm/radeon/kms: add common scaled modes for TV and LVDS
- drm/radeon/kms: add initial connector properties
- drm/radeon/kms: add rn50/r100/r200 CS tracker.
- drm/radeon/kms: Convert R100 to new init path (V2)
- drm/radeon/kms: Convert R300 to new init path
- drm/radeon/kms: Convert RS400/RS480 to new init path
- drm/radeon/kms: Convert RS400/RS480 to new init path & fix legacy VGA (V3)
- drm/radeon/kms: Convert RS600 to new init path
- drm/radeon/kms: Convert RS690/RS740 to new init path (V2).
- drm/radeon/kms: enable r600 tv outputs.
- drm/radeon/kms: Fix AGP support for R600/RV770 family (v2)
- drm/radeon/kms: Remove old init path as no hw use it anymore
- drm: split crtc/fb helpers into a separate module
- drm/ttm: Add a virtual ttm sysfs device.
- drm/ttm: Memory accounting rework.
- ep93xx video driver
- i915: fix intel graphics suspend breakage due to resume/lid event confusion
- matroxfb: make CONFIG_FB_MATROX_MULTIHEAD=y mandatory
- omapfb: add FB manual update option to Kconfig
- omapfb: add support for rotation on the Blizzard LCD ctrl
- omapfb: add support for the 2430SDP LCD
- omapfb: add support for the 3430SDP LCD
- omapfb: add support for the Amstrad Delta LCD
- omapfb: add support for the Apollon LCD
- omapfb: add support for the OMAP2EVM LCD
- omapfb: add support for the OMAP3 Beagle DVI output
- omapfb: add support for the OMAP3 EVM LCD
For other articles on 2.6.32 and links to the rest of the "Coming in 2.6.32" series, see The H's Kernel Log - 2.6.32 Tracking page.