Release Notes/2.6.2x

From IEEE 1394 FireWire Wiki
(Difference between revisions)
Jump to: navigation, search
(copied from Release Notes)

Latest revision as of 13:54, 24 May 2009

Release Notes: Kernel Drivers, v2.6.20..v2.6.29

See Release Notes for changelogs of the IEEE 1394 drivers in newer kernels.

The following release notes only summarize more notable changes in the IEEE 1394 drivers. The see kernel's git history for a complete list.


[edit] Linux 2.6.29

23 March 2009

  • Fix potential problem with interrupt control on big endian CPUs.
  • Remove unnecessary messages in the kernel log if the driver is loaded but unused.
  • Support 1600 Mb/s and 3200 Mb/s capable hardware. Previously there was a limit to 800 Mb/s. (firewire-core had no such limit.)
  • Work around "irq...: nobody cared" and interrupt storm during resume after system suspend.
  • Increase number of hardware-assisted transmission retries when responder nodes are busy. Fixes AV/C control failures of camcorders with dvgrab ("send oops") and kino (loss of AV/C control), and possibly with other devices and software as well. Also fixed in and
  • Synchronize device quirk detection and handling with the code in the sibling driver firewire-sbp2.
  • Add workarounds for 2nd and 3rd generation iPods. 2nd generation was found to need a request size limitation, 3rd generation reported a wrong capacity. This resulted in unrecoverable IO errors right after an affected iPod was plugged in. Also fixed in and
  • New driver for FireWire-attached DVB receiver boxes and cards from Digital Everywhere, known as FireDTV and FloppyDTV.
    This driver currently works together with the old 1394 driver stack only (ieee1394 + ohci1394); compatibility with the new stack (firewire-core + firewire-ohci) will probably follow in the next kernel release. Also, only standard definition channels are supported for now; HD cannot be received yet.
    The driver works with the DVB-C, -S, -S2, -T variants of FireDTV and FloppyDTV and also supports their remote control and Conditional Access Modules. The driver is meant to be used together with any viewer software which supports Linux' DVB programming interface, just like PCI or USB DVB receivers.
  • Fix potential crash in rapid succession of bus resets.
  • Do not detach protocol drivers (firewire-sbp2 or userspace driver programs) if devices briefly disappear or seem to disappear from the bus. This happens
    • when certain bus-powered hubs are plugged in,
    • when certain devices are plugged into 6-port hubs,
    • when certain disk enclosures are switched from self-power to bus power or vice versa and break the daisy chain during the transition,
    • when certain hubs temporarily malfunction during high bus traffic.
  • Fix rare bugs related to module unloading and to errors during card initialization.
  • Avoid "context_stop: still active" noise in the kernel log.
  • Increase number of hardware-assisted transmission retries when responder nodes are busy. Fixes AV/C control failures (like in ohci1394). Also fixed in and
  • Fix IOMMU resource exhaustion in an error path. Also fixed in and
  • Add workarounds for 2nd and 3rd generation iPods (like in sbp2). Also fixed in and

[edit] Linux 2.6.28

24 December 2008

  • Change locking in the mmap() handler to prevent an unlikely deadlock.
  • Change locking in the mmap() handler to prevent an unlikely deadlock of multithreaded client programs. (It nonetheless is not a good idea to use the same raw1394 file handle in multiple threads; it may be hard to get such a client right.)
  • Change locking in the write() handler to make it multithreading-safe. (But see above.)
  • Remove the Big Kernel Lock from the ioctl() handler for better system performance.
  • Fix corruption of CSR response handler list (ARM handlers in raw1394 terminology) on boxes with more than one FireWire controller.
  • Do not detach the sbp2 driver if devices briefly disappear or seem to disappear from the bus. This happens
    • when certain bus-powered hubs are plugged in,
    • when certain disk enclosures are switched from self-power to bus power or vice versa and break the daisy chain during the transition,
    • when the user plugs a cable out and quickly plugs it back in, e.g. to reorder a daisy chain (works on Mac OS X if done quickly enough),
    • when certain hubs temporarily malfunction during high bus traffic.
Previously, mounted filesystems on FireWire disks would have been lost at such occasions. But now there is a high chance that they stay accessible.
  • Fix recognition of Freecom FireWire Harddrive. (also in
  • Add quirk handling for some iPod mini. (also in
  • Fix kernel freeze after many bus resets. (also in
  • Fix memory leak at bus reset. (also in
  • Fix iso transmit parameters in the character device file interface. (also in
  • Fix IOMMU resource leak, e.g. visible as "DMA: Out of SW-IOMMU space" on EM64T boxes and subsequent I/O errors. (also in
  • Fix a memory leak at module removal.
  • Improve login and logout handling. (also in
  • Add quirk handling for some iPod mini. (also in

[edit] Linux 2.6.27

9 October 2008

dv1394, raw1394, video1394
  • Include mmap()ed isochronous data buffers in program crash dumps.
  • Fix regression since Linux 2.6.25: When new nodes were added to a bus with existing ones, driver updates were not prioritized like in previous kernels. This especially degraded SBP-2 reconnection.
  • Fix connection loss to old nodes when certain devices were plugged into a bus with a 6-port hub.
  • Spin disks down (i.e. switch spindle motor off) when the system is suspended or shut down, or when the driver is unloaded.
  • Fix disk spin-down for PL-3507 and TSB42AA9 firmwares.
  • Fix connection loss after "Failed to reconnect to sbp2 device" during bus reset series.
  • IEEE 1394(a) compliance fixes: Don't respond to broadcast write requests, implement Broadcast_Channel register. (Not yet done: Allocate broadcast channel.)
  • Fix a kernel panic during asynchronous transmission when a bus reset occurs.
  • Fix reception of block read responses on 64bit architectures.
  • Fix a kernel warning (call trace dump) in the bus reset handling.
  • Fix isochronous reception with TSB43AB22A controllers on 64bit architectures with more than 2GB memory.
firewire-core + firewire-ohci
  • The issue with dvgrab on VIA VT630x OHCI 1.0 cards has been resolved. (DV reception got stuck after one or a few frames, the IR DMA context could not be woken up anymore.) The actual kernel change which resolved this is not known.
  • Spin-down feature and fixes as in sbp2

Sbp2's and firewire-sbp2's spin-down feature is not active in multiple initiator setups, i.e. when non-exclusive login is configured.

[edit] Linux 2.6.26

13 July 2008

  • Fix speed detection with some GOF repeaters.
  • The driver raw1394, video1394, dv1394 are not bound to struct device instances anymore. This change is only important for driver programmers. It is for example necessary for the firesat DVB driver which is currently in the works at the Linux Driver Project.
  • Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
  • Change of isochronous transmit policy: If the controller skips a cycle e.g. because of transmit FIFO underflow, the respective packet is now requeued for transmission in the next cycle instead of being dropped.
  • Related change of semantics of the struct raw1394_iso_status.overflows field: upper 16 bits contain number of cycle skips in IT (see above), lower 16 bits contain the "overflows" value as before.
  • Properly rescan devices which changed their configuration ROM. This fixes soft-power-off of some FireWire harddisks and similar situations in which the drivers missed that a device went on or off.
  • Fixes: Bus reset loop after PHY config packet transmission; gap count synchronization between all nodes (device detection related); kernel panic due to unexpected reception of PHY packets.
  • After a device was removed, fail open(), ioctl(), mmap() properly with -ENODEV.
  • New runtime switch to enable verbose logging in dmesg:
    echo N > /sys/module/firewire_ohci/parameters/debug
    with N = 0: off (default), 1: asynchronous packet sent or received, 2: self IDs, 4: interrupts, 8: bus reset interrupt events, or a combination (sum) of several of these flags.
  • fixes for asynchronous transactions on Texas Instruments controllers
  • fixes to make JMicron based cards work
  • Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
  • stricter error checks in self ID reception
  • new compile-time option FIREWIRE_OHCI_REMOTE_DMA in the "Kernel hacking" menu of the kernel configuration for remote debugging, only interesting to kernel developers
  • Fix detection of some multi-unit devices, e.g. drives in a SONY DVD jukebox.

Known issues: The new firewire drivers are still unable to capture DV on VIA VT630x OHCI 1.0 chips. Support for isochronous resource management is still missing in the firewire-core character device API. IP over 1394 implementation equivalent to eth1394 is still not available for the new stack.

[edit] Linux 2.6.25

16 April 2008

  • Raise default size limit of requests for better throughput. This brings sbp2 performance on par with firewire-sbp2 on FireWire 800 buses. Alas some older devices cause I/O errors on large requests, but the known broken ones are detected and handled accordingly. If you encounter errors with 2.6.25 which didn't happen in previous kernels, this change may be the cause; please report it at linux1394-devel then.
  • Fix bogus device additions if was run. Note, this script is not necessary and even was detrimental with sbp2 in the 2.6 kernel series.
  • Add workaround flag for delay between login and inquiry, flag is active for DViCO FX-3A.
  • Fixes for "giving up on config rom" errors.
  • Fix "kobject_add failed for fw* with -EEXIST".
  • Fix kernel crash when firewire-ohci was unloaded.
  • Fix isochronous reception for IIDC cameras.
  • Fix for systems with more than 3 GB RAM.
  • Fix for systems with IOMMU.
  • Fix for big endian CPUs.
  • Fix module reloading and suspend/resume on Apple PowerMac and PowerBook.
  • Add support for the old Apple UniNorth rev.1 controller.
  • Fix kernel panic in asynchronous transmission.
  • Handle "cycle too long" condition.
  • Several fixes and improvements for device recognition, probing, and reconnection.
  • Fix I/O errors which happened as soon as the PCI bus became slightly busy. Affected were all SBP-2 chipsets except OxSemi ones. This fix is especially required for PL-3507 based devices.
  • Fix bugs caused by
  • This is a new standalone driver, independent of the ieee1394 and firewire driver stacks. It is used for kernel development, particularly remote debugging of kernel initialization. This driver is configured by a kernel build config option in the "Kernel hacking" menu and a kernel boot parameter. Documentation is provided in the documentation directory of the kernel sources. Driver author is Bernhard Kaindl.

Known issues: Regression in ieee1394: When new nodes are added to a bus with existing ones, driver updates are not prioritized like in previous kernels. This especially degrades SBP-2 reconnection. Fixed in Linux 2.6.27.

[edit] Linux 2.6.24

24 January 2008

  • Fix locking in a rare error case.
  • Fix small memory leak after eth1394 or raw1394 modified the local configuration ROM.
  • Adopt "read cycle timer" ABI like in raw1394 since kernel 2.6.21.
  • Fix I/O after suspend/resume cycle for protocols which need the onfiguration ROM.
  • Fix leak of DMA mapping tables on non-coherent machines.
  • Check for unlikely error cases: PCI write posting error, self ID malconfiguration.
  • Fix DV reception for a lot of controllers. Note, a few OHCI 1.0 variants of VIA VT630x still don't work for DV.
  • Add support for targets with multiple logical units, e.g. JBOD multi-disk enclosures.
  • Add module load parameter "workarounds" for emergencies. This parameter works just like in the classic sbp2 driver.
  • Fix blocking of keyboard input and other system functions during attachment of devices.
sparc64 architecture
  • Fix kernel oops in DMA mapping, notably when loading firewire-ohci. This bug was present since kernel 2.6.23.

Known issues: The new firewire stack is still considered experimental. There are several bugs in isochronous reception which especially affect libdc1394. These should be fixed in kernel 2.6.25-rc1. There are also lots of issues with libraw1394's interface to the new drivers and regarding compatibility with existing applications. Also, firewire-sbp2 does not yet handle bus resets well enough. And work on an IP over 1394 implementation equivalent to eth1394 has not yet started.

Linux fixes an "INFO: possible recursive locking detected" warning which appeared in the kernel log e.g. when using dvgrab or firecontrol. The issue was harmless and not caused by the firewire drivers.

[edit] Linux 2.6.23

9 October 2007

  • Properly terminate sysfs attributes vendor_name_kv and model_name_kv.
  • Fix initialization on some hardware (some Toshiba Satellite in particular) in non-modular builds. This was a regression since Linux 2.6.19. Also fixed in Linux
  • Now almost completely fixed for 32bit userland on 64bit kernels. (There remain issues in the rarely used address range mapping functions.)
  • The long deprecated 1st generation isochronous ABI, consisting of the request types RAW1394_REQ_ISO_LISTEN and _SEND, have been removed. Callers of libraw1394's undocumented functions raw1394_iso_write, raw1394_start_iso_write, raw1394_start_iso_rcv, and raw1394_stop_iso_rcv are affected. Only ancient and obsolete programs used these calls which have been replaced by the more efficient rawiso and video1394 ABIs.
  • Fix crash in sbp2 initialization on PPC64. This was a regression since Linux 2.6.22. Also fixed in Linux
  • Expose the IEEE1394_SBP2_PHYS_DMA compile-time option on x86-64.
  • Add support for S100B...S400B and link speed slower than PHY speed.
  • Optimize bandwidth (gap count) in mixed 1394a/1394b topologies, except with 1394b repeater nodes present.
  • Fix memory leak. Also fixed in Linux
  • Fix scheduling in atomic context. Also fixed in Linux
  • iBook G3 and older Powerbooks refused to suspend. Also fixed in Linux
  • Fix panic on module unloading while devices were attached.
  • Fix "status write for unknown orb" followed by I/O errors.
  • Make it work on CardBus FireWire cards. Also fixed in Linux
  • Port from the old sbp2 driver: Limit sector count for certain old chipsets. Add module load parameter exclusive_login.

[edit] Linux 2.6.22

8 July 2007

  • Do not auto-load eth1394 per hotplug whenever a FireWire controller is initialized (usually: when ohci1394 is loaded). Hotplug events (uevents) for eth1394 are now only generated if another IPv4-over-1394 capable node was detected on a FireWire bus.
    From now on, those who want eth1394 have to load it manually, or simply connect another IPv4-over-1394 capable node (e.g. a PC with Windows XP or OS X), or add eth1394 to a distribution-dependent list of modules to be loaded on boot, or can simulate the old auto-loading together with ohci1394 by the following addition to /etc/modprobe.conf:
    install ohci1394 /sbin/modprobe eth1394; /sbin/modprobe --ignore-install ohci1394
  • Fix silent packet loss when eth1394 was unable to obtain transaction labels from ieee1394. The bug was noticeable by "eth1394: No more tlabels left" kernel messages.
  • Send GASP packets at S100 if 1394b hardware is present. Fixes eth1394 for S100B...S400B interconnects.
  • Allow users to configure MTU bigger than 1500 if they know what they are doing.
  • Link to a parent device (instead of a virtual parent) in sysfs. This fixes a regression since Linux 2.6.21: Udev rules for persistent naming of network interfaces didn't work anymore. The fix is also available in Linux and later.
  • The values of the sysfs attribute "address" of unit directories were wrong.
  • Send asynchronous streams at S100 rather than at a random speed.
  • Optimized DMA direction. Fixes crash on Xen.
  • New module load parameter: long_ieee1394_id. If left at the default value, nothing changes. If set to "y", the format of /sys/bus/scsi/devices/*:*:*:*/ieee1394_id is changed from e.g. 0001041010004beb:0:0 to 0001041010004beb:00042c:0000. This longer form is equivalent to the concatenation of the so-called Target Port Identifier and Logical Unit Identifier as per SCSI Architecture Model. The main benefit is that the same format is also used in the new firewire-sbp2 driver.
    (Explanation: The ieee1394_id in sysfs is typically used to create persistently named links in /dev/disk/by-id/. I.e. you can add entries like
    /dev/disk/by-id/ieee1394-0001041010004beb:00042c:0000-part3  /mnt/cx1  hfsplus user,noauto,noatime,force 0 0
    to /etc/fstab. With this example you can mount /mnt/cx1 without having to worry whether it's /dev/sda or sdb or whatever this time you plugged the FireWire disk in. This feature already existed in older kernels, only the format of the ID changed slightly in 2.6.22.)

New alternative driver stack in Linux 2.6.22 (experimental, incomplete):

  • This is a new driver, part of the new alternative FireWire driver stack known under the nickname "Juju", written by Kristian Høgsberg. Functionality-wise, firewire-core is a replacement for ieee1394, raw1394, video1394, and dv1394.
  • the new driver stack's equivalent to ohci1394
  • the new driver stack's equivalent to sbp2

See Juju Migration and for additional notes on firewire-core, firewire-ohci, and firewire-sbp2. More documentation on the new drivers will be gradually added to this Wiki.

Known issue: Sbp2 crashes on G5 Powermacs. Kernels older than 2.6.22 do not contain the bug. Fixed in Linux

[edit] Linux 2.6.21

25 April 2007

  • fixed driver crash on CardBus card ejection (also fixed in Linux
  • fixed resume after suspend or hibernation: the local config ROM was not restored which broke protocols like SBP-2 and IP over 1394
  • fixed driver crash or kernel crash if ieee1394 was loaded with parameter disable_nodemgr=1 (new bug in Linux 2.6.20, fix is also in
  • removed the kernel configuration options to export unused symbols for potential out-of-tree drivers and to translate OUIs into company names in sysfs
  • added feature to simultaneously read the cycle timer and the local system time (At the time of the kernel's release, the libraw1394 counterpart was in libraw1394's Subversion repo, pending for the next libraw1394 release)
  • now works on machines with non-coherent DMA, e.g. Intel 64bit machines (also fixed in
EM64T, IA64
  • fixed kernel crash related to DMA operations in a lot of drivers, among them video1394 and raw1394, on Intel 64bit machines with more than ~3GB RAM (also fixed in Linux and

[edit] Linux 2.6.20

4 February 2007

  • add deprecation note, application software should migrate to raw1394
  • set proper symlinks at /sys/bus/ieee1394/driver/*/module
  • fix kernel oops and strange hardware faults on some PPC machines when the module was reloaded (fix also in
  • fix recognition of capabilities of some DVD-ROM/R/W (fix also in; only Linux 2.6.19... are affected)
  • fix handling of SCSI command REQUEST_SENSE

Developer information: Linux 2.6.20 is the last release within which rather stable ieee1394 APIs for kernel drivers are maintained. Starting with Linux 2.6.21, developers of out-of-tree kernel drivers for FireWire hardware may be faced with more or less drastic changes of the kernel-internal APIs. (This does not affect userspace drivers which are built on top of libraw1394, libdc1394 and so on.)

Known issue: The ieee1394 option "disable_nodemgr=1" will lead to nonfunctional FireWire subsystem or even kernel lockup. This regression has been fixed in Kernels before 2.6.20 do not contain the bug.

Personal tools