Release Notes

From IEEE 1394 FireWire Wiki
Revision as of 19:36, 8 November 2008 by Stefanr (Talk | contribs)

Jump to: navigation, search

Release Notes: Kernel Drivers

See Release Notes - Libraries for changelogs of some IEEE 1394 userspace libraries.

Release Status

The latest stable releases of Linux IEEE 1394 drivers are those in the latest released Linux 2.6 kernels.

The drivers in Linux 2.4 are considered stable too but are not actively updated anymore. Therefore they lack some features and compatibility updates which went into recent Linux 2.6 releases.

The following release notes only summarize more notable changes. A complete list of IEEE 1394 related changes is available via kernel.org git: Changes in drivers/ieee1394, in drivers/firewire.


Contents


Linux 2.6.27.5

firewire-core
  • fix kernel freeze after many bus resets
  • fix memory leak at bus reset
  • fix iso transmit parameters in the character device file interface
firewire-sbp2
  • improve login and logout handling


Linux 2.6.27

dv1394, raw1394, video1394
  • Include mmap()ed isochronous data buffers in program crash dumps.
ieee1394
  • 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.
sbp2
  • 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.
firewire-core
  • 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.
firewire-ohci
  • Fix isochronous reception with TSB43AB22A controllers on 64bit architectures with more than 2GB memory.
firewire-sbp2
  • Spin-down feature and fixes as in sbp2

The two ieee1394 fixes and the sbp2 reconnection fix have also been sent to the maintainers of the stable 2.6.25.y and 2.6.26.y series but have not yet been published in these kernels at the time of this writing.

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


Linux 2.6.26

ieee1394
  • 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.
ohci1394
  • Explicitly switch on bus power after suspend/resume on some PowerMacs and PowerBooks.
raw1394
  • 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.
firewire-core
  • 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.
firewire-ohci
  • 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
firewire-sbp2
  • 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.


Linux 2.6.25

sbp2
  • 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 rescan-scsi-bus.sh 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.
firewire-core
  • Fixes for "giving up on config rom" errors.
  • Fix "kobject_add failed for fw* with -EEXIST".
  • Fix kernel crash when firewire-ohci was unloaded.
firewire-ohci
  • 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.
firewire-sbp2
  • 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 rescan-scsi-bus.sh.
init_ohci1394_dma
  • 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.


Linux 2.6.24

eth1394
  • Fix locking in a rare error case.
ieee1394
  • Fix small memory leak after eth1394 or raw1394 modified the local configuration ROM.
firewire-core
  • Adopt "read cycle timer" ABI like in raw1394 since kernel 2.6.21.
firewire-ohci
  • 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.
firewire-sbp2
  • 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 2.6.24.1 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.


Linux 2.6.23

ieee1394
  • Properly terminate sysfs attributes vendor_name_kv and model_name_kv.
ohci1394
  • 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 2.6.22.9.
raw1394
  • 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.
sbp2
  • Fix crash in sbp2 initialization on PPC64. This was a regression since Linux 2.6.22. Also fixed in Linux 2.6.22.2.
  • Expose the IEEE1394_SBP2_PHYS_DMA compile-time option on x86-64.
firewire-core
  • 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 2.6.22.2.
firewire-ohci
  • Fix scheduling in atomic context. Also fixed in Linux 2.6.22.2.
  • iBook G3 and older Powerbooks refused to suspend. Also fixed in Linux 2.6.22.9.
  • Fix panic on module unloading while devices were attached.
firewire-sbp2
  • Fix "status write for unknown orb" followed by I/O errors.
  • Make it work on CardBus FireWire cards. Also fixed in Linux 2.6.22.2.
  • Port from the old sbp2 driver: Limit sector count for certain old chipsets. Add module load parameter exclusive_login.


Linux 2.6.22

eth1394
  • 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 2.6.21.5 and later.
ieee1394
  • The values of the sysfs attribute "address" of unit directories were wrong.
raw1394
  • Send asynchronous streams at S100 rather than at a random speed.
sbp2
  • 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):

firewire-core
  • 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.
firewire-ohci
  • the new driver stack's equivalent to ohci1394
firewire-sbp2
  • the new driver stack's equivalent to sbp2

See Juju Migration and http://marc.info/?l=linux1394-user&m=118401466928264 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 2.6.22.2.


Linux 2.6.21

dv1394
  • fixed driver crash on CardBus card ejection (also fixed in Linux 2.6.20.5)
ieee1394
  • 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 2.6.20.2)
  • removed the kernel configuration options to export unused symbols for potential out-of-tree drivers and to translate OUIs into company names in sysfs
raw1394
  • 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)
video1394
  • now works on machines with non-coherent DMA, e.g. Intel 64bit machines (also fixed in 2.6.20.2)
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 2.6.19.6 and 2.6.20.2)


Linux 2.6.20

dv1394
  • add deprecation note, application software should migrate to raw1394
ieee1394
  • set proper symlinks at /sys/bus/ieee1394/driver/*/module
ohci1394
  • fix kernel oops and strange hardware faults on some PPC machines when the module was reloaded (fix also in 2.6.19.2)
sbp2
  • fix recognition of capabilities of some DVD-ROM/R/W (fix also in 2.6.19.3; only Linux 2.6.19...2.6.19.2 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 2.6.20.2. Kernels before 2.6.20 do not contain the bug.


Linux 2.6.19

eth1394
  • memory alignment problem fixed
ieee1394
  • recursive locking fixed
  • optimization of per-host kernel data structures; this apparently also fixed a kernel crash in hpsb_get_tlabel
ohci1394
  • initializes before most other device drivers to aid kernel debugging with firescope
raw1394
  • kernel freeze in address range mapping functions fixed
sbp2
  • HDDs whose motor was stopped after idle time or by another host are now automatically spun up
  • IO errors caused by "sbp2util_node_write_no_wait failed" fixed
  • another potential deadlock during device removal fixed
  • some combinations of Initio bridges and HDD mechanisms were wrongly detected as write protected; fixed by using a more standards conforming command for sd_mod's probing
video1394
  • poll() support added

Known issue: Some DVD-ROM/RW were mistaken for CD-ROM. Fixed in 2.6.19.3 and above.


Linux 2.6.18

ieee1394
  • less CPU usage in DMA housekeeping
  • support for S100...S400 1394b hardware and for devices with PHY faster than link
ohci1394
  • recover from "cycle too long" errors
sbp2
  • spin up Maxtor OneTouch disks when necessary (also in 2.6.17.8)

Among the rest of the changes are minor bug fixes, small changes to in-kernel API usage, and a small ieee1394 low-level API extension (for driver developers: two new members in struct hpsb_host which affect address range mapping).

Known issue: If the kernel is configured for "RW-sem debugging", a "recursive locking" warning in knodemgrd may appear in the kernel log. This is an old bug, but probably without practical impact. Fixed in 2.6.19.


Linux 2.6.17

ieee1394
  • Removed the dormant support for devfs
ohci1394
  • PhyUpperBound lowered from ~256 TB to 1 TB on chips which support a programmable PhyUpperBound
raw1394
  • 64bit compatibility code for read and write access to /dev/raw1394 (not yet for ioctls)
sbp2
  • Fix kernel freeze after disconnecting a device. The fix is also available in Linux 2.6.16.2.
  • Fix compatibility regression with PL-3507 since Linux 2.6.16 ("scsi_add_device failed"). Also available in 2.6.16.20.
  • Added a workaround for iPods (fixes "end_request: I/O error" at blocks near the end of the disk). Also available in 2.6.16.20.
  • Added module load parameter "workarounds". A numeric parameter which signifies a combination of workarounds for quirky hardware can be given. See "modinfo sbp2". The now redundant parameter "force_inquiry_hack" will be removed in a future release.
  • Disabled "modprobe -r ohci1394" (or pcilynx) while logged in into an SBP-2 device, preventing inadvertent loss of connection.


Linux 2.6.16

The bulk of changes to the IEEE 1394 subsystem since Linux 2.6.15 constitutes of behind-the-scenes cleanups, but there were also several bug fixes.

amdtp, cmp
  • These drivers were removed from the kernel. Their functionality is provided by libiec61883 now.
ieee1394
  • Bug fix: Suspend-to-disk would deadlock if the swap partition was located on a FireWire disk.
  • Reconnection to storage devices is often quicker now when additional devices get plugged in.
  • small consistency checks added to ROM parsing routines
ohci1394
  • logs number of hardware-implemented isochronous contexts when starting
raw1394
  • bug fixes for memory deallocation in config ROM manipulation routines
sbp2
  • Bug fix: Sbp2 always failed to connect to storage devices with "login timed out" with ALi and Fujitsu host adapters. This bug was believed to date back to the Mingh dynasty.
  • Bug fix: When a device was unplugged during ongoing I/O, the subsystem could fall into a deadlock, disabling subsequent hotplugs. (Fix is also available in Linux 2.6.15.5.)
  • Bug fix: The 36byte inquiry hack did not work in the last few Linux releases.
  • Bug fix: Resources were not freed when SCSI inquiry failed.
  • SCSI commands are no longer converted between command sets. The SCSI command set drivers, especially sd, are now using the proper command set.
  • Responses to inquiry commands from userspace sg I/O are now passed through as-is.
scsi/sd (as far as related to sbp2)
  • Bug fix: Memory corruption was encountered when FireWire disks with Initio bridge chip or some other bridge chips were plugged in. Could cause error messages, application crashes, or kernel panic. (Fix is also available in Linux 2.6.15.5.)
video1394
  • Bug fix: Wrong timestamps were generated. (bug from Linux 2.6.11)
  • Bug fix: When an ioctl failed to get a free channel, a wrong error number was returned.
several drivers
  • numerous code cleanups without change in functionality (or so we hope)
  • When starting, eth1394, ohci1394, and sbp2 do not log a version number anymore. There is no way to keep a meaningful version number without strictly centralized development model.
  • 1394 subsystem enabled in arch/x86_64/defconfig

Known issue: Some storage devices based on Prolific PL-3507 were not accessible anymore. Fixed in 2.6.16.20 and 2.6.17.


Linux 2.6.15

ieee1394
  • Fix recognition of some pre-1394a devices, notably LSI based SBP-2 devices. ieee1394 now writes the broadcast channel register only to devices which actually support the register. Fixes also an interoperability regression of Linux 2.6.14.
  • Fix recognition of some devices after the PC was switched off and on, notably of Motorola DCT6200. ieee1394 posts one resume packet to wake up suspended remote ports.
pci
  • Workaround for FireWire controller of several Toshiba notebooks.
sbp2
  • Fix for occasional oops during command abortion.
scsi/sd
  • Fix panic or oops when runing the eject command on an iPod. Fix is also available in Linux 2.6.14.5.


Linux 2.6.14

raw1394
  • fix for deadlocks on SMP machines
eth1394
  • workaround for 1394b cards, required on some architectures
ieee1394
  • bus reset handling slightly changed, helps to detect new devices after a cycle master related reset
  • MODALIAS variable provided to hotplug userspace scripts
sbp2
  • serialize_io=1 is now default, for better interoperability (add "options sbp2 serialize_io=0" to /etc/modprobe.conf for optimum performance of 1394b disks)
  • fix for hangs of the ieee1394 and scsi subsystems when devices were unplugged, fix for "modprobe -r sbp2" (these fixes are also present in Linux 2.6.13.4)


Linux 2.6.12

Linux Kernel 2.6.12 contains a major upgrade for IEEE 1394. This is arguably the first stable version of Linux 1394 for 2.6 (your mileage may vary). Not only does it contain many bug fixes resolving all known kernel warnings, it also fixes multi-LUN support for sbp2 and contains new sysfs entries to support udev rules for the generic setup of /dev nodes. See our new FAQ item for example udev rules.

Personal tools