Kernel Log: Coming in 2.6.31 - Part 5: CUSE, USB 3.0, FireWire networking and the rest
by Thorsten Leemhuis
Linux 2.6.31 will support USB 3.0, although the corresponding hardware is not yet available. Distributions are to use the new FireWire stack that now offers LAN support. CUSE emulates the Open Sound System via a userspace program. Another new addition is a driver for Acer's Aspire One netbook.
Last Friday, Linus Torvalds released the eigth pre-release version of Linux 2.6.31. As the lead developer stressed in the release announcement, it will be the last pre-release version. He is on holiday diving for the next week and hopes to present the 2.6.31 release on the Labor Day US Holiday, which falls on September 7th this year.
Because, until then, only bug fixes will be fed into the main development branch, we are presenting the fifth and final part of the Kernel Log mini series now, concluding the detailed overview of the new features in the forthcoming kernel version. This edition will discuss all the subsystems that were left unmentioned in the previous parts – mainly the drivers and driver-related infrastructures like the ACPI and PCI subsystems. In the "Latecomers" section of this article we also mention a few stragglers from the areas already covered in previous editions.
For other articles on 2.6.31 and links to the other four parts of the "Coming in 2.6.31" series, see The H's Kernel Log - 2.6.31 Tracking page.
Fast transmissions
As expected, changes to the USB subsystem include the code to support USB 3.0 controllers with their Extensible Host Controller Interface (xHCI) (for example 1, 2, 3, 4, 5). Although various vendors have already released details about USB 3.0 hardware, so far, no actual products have become available. The USB 3.0 support in Linux is, therefore, not particularly relevant for now – but this will probably change in the long run; after all, the previous two USB interface generations have been resoundingly successful.
An overview of the changes to the FireWire code is available in the two main git-pull requests submitted by FireWire maintainer Stefan Richter (1, 2). Among other things, the maintainer highlights the added support for "IPv4 over IEEE 1394" (networks via FireWire) in the more recent of the Linux kernel's two FireWire stacks. He also points out that the more recent "firewire" stack is no longer classified as experimental, and that the distributions should, therefore, give it preference in the future. According to the maintainer, the new stack offers better performance, better compatibility, more features and improved security. However, he also points out that the old "ieee1394" stack is still the best choice for audio hardware and for the FireWire DVB devices supported by the firedtv driver.
Drawing devices
With 2.6.31, the FUSE (Filesystem in Userspace)-based CUSE (Character device in Userspace) feature will be integrated into Linux. It allows userspace programs to emulate virtual devices that are accessible to other programs via the usual character-oriented device files in the same way as "proper" character devices implemented via a kernel driver.
This enables programmers to develop, for example, a userspace program that emulates the obsolete OSS (Open Sound System); it implements the devices expected by OSS programs via CUSE and then uses these devices to accept the data, process it and output it using the current ALSA sound system. The developer of CUSE, a Novell employee, has released such an OSS proxy for testing. Find further background information about CUSE and its potential uses in an article released on LWN.net some time ago.
Specials corner
The staging area with its drivers that don't live up to the kernel hackers' quality standards has reached quite a considerable size. However, in the current development cycle it has actually shrunk a bit, as Greg Kroah-Hartman pointed out in his git-pull request for the changes to the staging area ("We are removing more crap than we are adding, looks like progress to me! :)"). This is mainly due to the reorganisation of several drivers for Ralink Wi-Fi chip-sets, as already discussed in the Kernel Log.
In addition to the rtl8192su and vt6655 Wi-Fi drivers mentioned there, the staging area now contains the new octeon-ethernet network driver for SoCs (Systems on a Chip) from Cavium's Octeon family. Further kernel additions at the tail end of the current development cycle are the cpc-usb CPC-CAN-USB driver and the rudimentary udlfb framebuffer driver (1, 2) for DisplayLink devices.
The developers removed serqt_usb because a kernel hacker has developed a completely new alternative driver for the same hardware – it is not the first and probably won't be the last time the kernel developers have decided to replace a staging driver with a completely new driver instead of trying to improve a "dodgy" one.
In brief
The changes described above are only the most significant of those recently made by the kernel hackers. Here is a short overview of further changes:
Notebooks:
- The kernel hackers have integrated the acerhdf driver, which provides temperature read-outs and fan control options for Acer's Aspire One netbook.
- The asus_acpi driver has been marked as "deprecated" – developers recommend using asus-laptop instead.
USB:
- Several changes have been made to the USB code to upgrade the way it supports current power saving techniques.
- The kernel hackers have added a generic USB audio gadget driver and a USB gadget driver for the HS/OtG block found in recent SoCs by Samsung.
- Another new Linux addition is a driver for the USB-OTG part in Intel's Langwell I/O component. This component is part of the Moorestown platform, which has been fully optimised for Linux use; while the driver for the corresponding transceiver was added briefly, it was later removed for the time being.
Miscellaneous:
- As Jesse Barnes writes in his git-pull requestChanges to the PCI subsystem have been less substantial than in Linux 2.6.30. One of the reported major additions is the improved support of PCI Express Root Port Advanced Error Reporting (AER). The PCI subsystem is now compatible with Address Translation Service (ATS) 1.0. The IOMMU code, which now supports IOMMU pass through, contains a more flexible workaround for graphics card drivers which gets rid of the CONFIG_DMAR_GFX_WA configuration option.
- The kernel hackers working with Rafael J. Wysocki in the power management area primarily did some clearing up.
- Changes in the crypto area include one addition which now allows the padlock driver to work on x86-64 systems.
- A new addition to Linux 2.6.31 is the LinuxPPS (Linux Pulse Per Second) device, which provides one signal per second and is accessible to userspace applications like NTPD; further details about its potential uses and additional background information can be found in the LinuxPPS wiki and in the kernel documentation.
Minor gems
Many additional 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 lead to the relevant commits in the web front end of the main Linux development branch, where the commit comments and the patches themselves provide extensive further information on the respective changes.
FireWire and USB
FireWire:
- firewire: core: add sysfs attribute for easier udev rules
- firewire: net: add Kconfig item, rename driver
- firewire: sbp2: add support for disks >2 TB (and 16 bytes long CDBs)
- ieee1394: sbp2: add support for disks >2 TB (and 16 bytes long CDBs)
USB:
- musb: add high bandwidth ISO support
- USB: Add SuperSpeed to the list of USB device speeds.
- USB: add the usbfs devices file to debugfs
- USB: Add USB 3.0 roothub support to USB core.
- USB: add usb debugfs directory
- USB: audio: add USB audio class definitions
- USB: CP210x Add new device IDs
- USB: Don't reset USB 3.0 devices on port change detection.
- USB: ftdi_sio: Add support for GN Otometrics Aurical USB Audiometer
- USB: FTDI-SIO new device ids
- USB: gadget: Add i.MX3x support to the fsl_usb2_udc driver
- USB: gadget: audio: provide correct device id
- USB: new flag for resume-from-hibernation
- USB: option: add Novatel Ovation MC760
- USB: option: Add USB ID for Novatel MC727/U727/USB727 refresh
- USB: option: add ZTE device ids and remove ONDA ids
- USB: option.c: add A-Link 3GU device id
- USB: option.c: add Qualcomm/Option iCON 210 modem
- USB: option.c: add Toshiba 3G HSDPA SM-Bus Minicard device id
- USB: option.c to support Qisda H21/H20 usb modem
- USB: pl2303: New vendor and product id for the prolific driver
- USB serial: Add ID for Turtelizer, an FT2232L-based JTAG/RS-232 adapter.
- USB: Serial: Add support for Arkham Technology adapters
- USB: serial: option: Add ZTE AC8710 usb modem device.
Input Devices
- HID: add new multitouch and digitizer contants
- HID: autocentering support for Logitech Force 3D Pro
- HID: autocentering support for Logitech G25 Racing Wheel
- HID: force feedback support for SmartJoy PLUS PS2/USB adapter
- HID: Multitouch support for the N-Trig touchscreen
- HID: Wacom Graphire Bluetooth driver
- Input: add dm355evm_keys driver
- Input: add driver for EETI touchpanels
- Input: add driver for Synaptics I2C touchpad
- Input: add matrix keypad driver for Cirrus EP93xx
- Input: add support for touchscreen on W90P910 ARM platform
- Input: add twl4030-pwrbutton driver
- Input: add wm97xx accelerated driver for Atmel microprocessors
- Input: ALPS - Dell Latitude D630/D800 have DualPoint
- Input: ALPS - handle touchpoints buttons correctly
- Input: appletouch - improve finger detection
- Input: atkbd - add forced release keys quirk for FSC Amilo Pi 3525
- Input: atkbd - add force relese key quirk for Soltech TA12
- Input: i8042 - add Asus G1S to noloop exception list
- Input: i8042 - more reset quirks for MSI Wind-clone netbooks
- Input: iforce - support new revision of ACT LABS Force RS
- Input: introduce lm8323 keypad driver
- Input: psmouse - ESD workaround fix for OLPC XO touchpad
- Input: rotary_encoder - add support for REL_* axes
- Input: wacom - add DTF720a support and fix rotation on Intuos3
- Input: wacom - add support for Intuos4 tablets
- Input: wistron_btns - recognize Maxdata Pro 7000 notebooks
- Input: wistron_btns - support Prestigio Wifi RF kill button
Notebook-Drivers
- acpi4asus: update MAINTAINER and KConfig links
- asus-laptop: remove EXPERIMENTAL dependency
- dell-wmi: add additional keyboard events
- eeepc-laptop: add rfkill support for the 3G modem in Eee PC 901 Go
- eeepc-laptop: cpufv updates
- eeepc-laptop: enable camera by default
- eeepc-laptop: Register as a pci-hotplug device
- eeepc-laptop: rfkill refactoring
- eeepc-laptop: sync eeepc-laptop with asus_acpi
- hp-wmi: Add support for reporting tablet state
- thinkpad-acpi: add quirklist engine
- thinkpad-acpi: disable broken bay and dock subdrivers
- thinkpad-acpi: enhance led support
- thinkpad-acpi: forbid the use of HBRV on Lenovo ThinkPads
- thinkpad-acpi: remove dock and bay subdrivers
- thinkpad-acpi: support the second fan on the X61
Edac, HW-Monitoring, I2C and Watchdog
Edac:
- amd64_edac: add driver header
- amd64_edac: add memory scrubber interface
- amd64_edac: add DRAM error injection logic using sysfs
- edac: add CPC925 Memory Controller driver
HW-Monitoring:
- hwmon: (abituguru3) DMI probing for AB9, AB9 QuadQT and IX38 QuadGT
- hwmon: (f71882fg) Add support for the F71858F
- hwmon: (f71882fg) Add temp#_fault sysfs attr for f8000
- hwmon: (ibmaem) Automatically load on HC10 blade
- hwmon: (max6650) Add support for alarms
- hwmon: (tmp401) Add documentation
- hwmon: (tmp401) Add support for TI's TMP401 sensor chip
- hwmon: (tmp401) Add support for TI's TMP411 sensors chip
- hwmon: (w83627ehf) Add W83627DHG-P support
- lis3: add click function
- lis3: add three new laptop models
I2C:
- i2c: Add a sysfs interface to instantiate devices
- i2c: driver for the Synopsys DesignWare I2C controller
- i2c: Kill client_register and client_unregister methods
- i2c-ocores: Can add I2C devices to the bus
- i2c: ST DDC I2C U300 bus driver v3
- i2c-viapro: Add new PCI device ID for VX855
Watchdog:
- WATCHDOG: add bcm47xx watchdog driver
- WATCHDOG: Add pnx833x_wdt
- WATCHDOG: Freescale STMP: watchdog driver
- WATCHDOG: hpwdt: Add NMI priority option
- WATCHDOG: hpwdt: Add NMI sourcing
- WATCHDOG: twl4030 watchdog driver
- WATCHDOG: U300 COH 901 327 watchdog driver
- WATCHDOG: w83627hf_wdt.c: add support for the W83627EHF support
Staging Area
- Staging: add mailing list address for staging tree
- Staging: add pata_rdc driver
- Staging: Add serqt_usb2, a rewrite of serqt_usb for the usb-serial layer
- Staging: rt2870: Add USB ID for Linksys, Planex Communications, Belkin
- Staging: comedi: add vmk80xx USB driver
- Staging: Comedi: vmk80xx: Add k8061 support
- Staging: cpc-usb: add driver to the build
- Staging: cpc-usb: add TODO file
- Staging: pata_rdc: add driver to the build system
- staging: remove aten2011 driver
- Staging: rt2870: Add USB ID for Sitecom WL-608
- Staging: serqt_usb2 add the driver to the build
- Staging: wlan-ng: Move firmware loading into driver
Various Drivers
- Add MAX17040 Fuel Gauge driver
- gpio: driver for PrimeCell PL061 GPIO controller
- leds: Add options to have GPIO LEDs start on or keep their state
- leds: alix-leds2 fixed for Award BIOS
- leds: LED driver for National Semiconductor LP3944 Funlight Chip
- LP3971 PMIC regulator driver (updated and combined version)
- Maxim 1586 regulator driver
- mfd: add PCAP driver
- mfd: add U300 AB3100 core support
- msm_serial: serial driver for MSM7K onboard serial peripheral.
- regulator: add userspace-consumer driver
- rtc: add stand-alone driver for RX8025 chip
- tty: Bring the usb tty port structure into more use
- tty: rewrite the ldisc locking
Security and Crypto
- crypto: aes-ni - Add support for more modes
- crypto: padlock - Enable on x86_64
- crypto: talitos - Add ablkcipher algorithms
- IMA: Minimal IMA policy and boot param for TCB IMA policy
- hwrng: via_rng - Support VIA Nano hardware RNG
- hwrng: via_rng - Support VIA Nano hardware RNG on X86_64 builds
- hwrng: via_rng - The VIA Hardware RNG driver is for the CPU, not Chipset
- smack: implement logging V3
- Security/SELinux: seperate lsm specific mmap_min_addr
ACPI, PCI and Power Management
ACPI:
- ACPI: delete acpi.power_nocheck from kernel-parameters.txt
- ACPI: DMI to disable Vista compatibility on some Sony laptops
- ACPI processor: force throttling state when BIOS returns incorrect value
- ACPI: video: DMI workaround broken Acer 7720 BIOS enabling display brightness
- PNPACPI: parse Extended Address Space Descriptors
PCI:
- dma-debug: add dma_debug_driver kernel command line
- dma-debug: add documentation for the driver filter
- intel-iommu: Make iommu=pt work on i386 too
- intel-iommu: Restore DMAR_BROKEN_GFX_WA option for broken graphics drivers
- irqs: add IRQF_SAMPLE_RANDOM to the feature-removal-schedule.txt (deprecated) list
- PCI: add power-state name strings
- PCI: Add support for turning PCIe ECRC on or off
- PCI: disable ASPM on VIA root-port-under-bridge configurations
- PCI: expose SMBus on Asus notebook A6L
- PCI: handle Virtual Function ATS enabling
- PCI hotplug: create symlink to hotplug driver module
- PCI: More PATA quirks for not entering D3
- PCI: PCIE AER: Document for PCIE AER software error injection
- PCI quirk: HP hides SMBus controller in Compaq nx9500 laptops
- PCI quirk: unhide 'Overflow' device on i828{6,7}5P/PE chipsets
- PCI: Remove untested Electromechanical Interlock (EMI) support in pciehp.
- PCI: use ACPI _CRS data by default
- VT-d: add device IOTLB invalidation support
- VT-d: support the device IOTLB
Power Management:
- CPUFREQ: Enable acpi-cpufreq driver for VIA/Centaur CPUs
- CPUFREQ: Mark e_powersaver driver as EXPERIMENTAL and DANGEROUS
- CPUFREQ: ondemand: Uncouple minimal sampling rate from HZ in NO_HZ case
- CPUFREQ: Only set sampling_rate_max deprecated, sampling_rate_min is useful
- CPUFREQ: Powernow-k8: support family 0xf with 2 low p-states
- mm, PM/Freezer: Disable OOM killer when tasks are frozen
- NOHZ: Properly feed cpufreq ondemand governor
- PM core: rename suspend and resume functions
- PM/Hibernate: Move memory shrinking to snapshot.c (rev. 2)
- PM: Separate suspend to RAM functionality from core
- PM/Suspend: Do not shrink memory before suspend
Various others infrastructure changes
- Add '-fno-delete-null-pointer-checks' to gcc CFLAGS
- Alan doesn't want to maintain tty code any more
- console: make blank timeout value a boot option
- cpusets: document adding/removing cpus to cpuset elaborately
- docs: Encourage better changelogs in the development process document
- Documentation: Add "how to write a good patch summary" to SubmittingPatches
- Documentation/Changes: perl is needed to build the kernel
- Document Reported-by in SubmittingPatches
- Document the debugfs API
- driver core: fix documentation of request_firmware_nowait
- driver core: set default SYSFS_DEPRECATED=n
- driver core: synchronize device shutdown
- Driver Core: Warn driver authors about adding device attributes
- drivers: add support for the TI VLYNQ bus
- edac: add DDR3 memory type for MPC85xx EDAC
- firmware: speed up request_firmware(), v3
- futex: add requeue-pi documentation
- kbuild: add generic --set-str option to scripts/config
- kbuild: finally remove the obsolete variable $TOPDIR
- kconfig: handle comment entries within choice/endchoice
- MAINTAINERS: mention scripts/get_maintainer.pl in the preface
- mmc: add the new linux-mmc mailing list to MAINTAINERS
- modules: sysctl to block module loading
- printk: add KERN_DEFAULT loglevel to print_modules()
- printk: Add KERN_DEFAULT printk log-level
- RCU: make treercu be default
- rcu: Mark Hierarchical RCU no longer experimental
- Remove multiple KERN_ prefixes from printk formats
- sched: rt: document the risk of small values in the bandwidth settings
- sched: Document memory barriers implied by sleep/wake-up primitives
- signals: implement sys_rt_tgsigqueueinfo
- TTY: Maintainer change
Latecomers
The previous four parts of the Kernel Log mini series have already given a detailed overview of the many changes in of the Linux kernel. All of the major enhancements have already been mentioned there, as the usual first phase of the development cycle moved into the main development branch. Some small, usually not quite as important changes have slipped into the "minor gems" section after we had reported on the relevant areas. For completeness, we have included these changes in the following list.
Audio
Graphics
- drm/i915: Add eDP support on IGDNG mobile chip
- drm/i915: Add support for dual-channel LVDS on 8xx.
- drm/i915: Allow frame buffers up to 4096x4096 on 915/945 class hardware
- drm/i915: enable DisplayPort support on IGDNG
- drm/i915: hdmi detection according by reading edid
- drm/i915: ignore lvds on AOpen Mini PC MP-915
- drm/i915: Set preferred mode for integrated TV according to TV format
- drm/radeon/kms: Add specific rs690 authorized register table
File Systems
Network
LAN:
- Add IDs for 3C905B-TX Fast Etherlink XL PCI
- Add mac driver for w90p910
- mlx4_core: Add new ConnectX EN PCI ID 0x6764
- net: Micrel KS8851 SPI network driver
- New device ID for sc92031 [1088:2031]
- pegasus: Add new device ID.
- USB host CDC Phonet network interface driver
WLAN:
- b43: Add support for 4318E
- iwlwifi: only show active power level via sysfs
- mac80211: disable mesh
- ssb: Add support for 4318E
- zd1211rw: adding SONY IFU-WLM2 (054c:0257) as a zd1211b device
V4L/DVB
For other articles on 2.6.31 and links to the rest of the "Coming in 2.6.31" series, see The H's Kernel Log - 2.6.31 Tracking page. Older Kernel Logs can be found in the archives or by using the search function at The H Open Source.
(thl/c't)
(djwm)