Release Notes/2.6.3x

From IEEE 1394 FireWire Wiki
Jump to: navigation, search

Release Notes: Kernel Drivers, v2.6.30..v2.6.39

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.


Contents


Linux 2.6.39

18 May 2011

firewire-core
  • Increase the default timeout of outbound split transactions from 100 ms to 2000 ms. This is mostly just relevant to some audio devices for which the FFADO drivers used to increase this timeout.
  • Try to probe even nodes whose self-ID packet does not have the "link active" bit set. Some rare devices wrongly have this bit off and were therefore not recognized.
  • Fix the FW_CDEV_IOC_ADD/REMOVE_DESCRIPTOR ioctl()s which did not update the local Config ROM properly since kernel 2.6.36 if called in repetition. Also fixed in Linux 2.6.38.6.
snd-firewire-speakers
  • New ALSA driver for LaCie FireWire Speakers. Also has got some experimental support for Griffin FireWave.


Linux 2.6.38

14 March 2011

firewire-core
  • Fix access to some Canon camcorders, notably MV5i. Also fixed in kernel 2.6.37.1, 2.6.36.4, and 2.6.33.8.
firewire-net
  • Longstanding performance issues are now fixed thanks to changes in firewire-ohci.
  • Show carrier status to userland.
  • Refresh the ARP cache quicker after a temporary disconnection.
firewire-ohci
  • Fix reception of asynchronous packets larger than 4080 bytes.
  • Performance of asynchronous reception has been improved considerably. Busy link situations that were previously very common with firewire-net and with applications that required fast async reception are now avoided.
  • Fix restoration of the GUID after PM resume with some BIOSes.
  • Restart isochronous DMAs after PM resume if they were running at PM suspend time. Also needed for broadcast reception by firewire-net.
firedtv
  • Fix reporting of IR remote control key presses to recent Xorg versions.

As always, there have also been several further low-profile improvements, e.g. a few small changes to firewire-core and firewire-ohci which each lower CPU utilization a little bit or prevent potential corner case bugs.

Known issues: On systems with the kernel configured for a maximum supported number of CPU cores which is not a power of two, firewire-ohci of kernel 2.6.38 and newer triggers a bug in the kernel's memory management system, causing a crash during boot (bug 31572). As a workaround, set CONFIG_NR_CPUS to 4 instead 3, 8 instead of 6, or 16 instead of 10 etc., depending on your needs. This bug has been fixed (i.e. the workaround is no longer needed) in Linux 3.1 and 3.0.3.


Linux 2.6.37

4 January 2011

firewire-net
  • Fix memory leaks.
  • Fix counting of transmit statistics.
  • Fix firewire-net blocking other FireWire I/O.
firewire-ohci
  • Fix crashes or memory corruption during reception of large asynchronous requests or responses. These bugs were for example experienced when using firewire-net. Also fixed in 2.6.36.2, 2.6.35.10, 2.6.34.9, 2.6.33.8, and 2.6.32.27.
firedtv
  • Add support for DVB-S2 HD channels. (HD already worked on DVB-C and presumably DVB-T.)
  • Add a module parameter to adjust CA system IDs. This is a workaround for users of Content Access Module and applications like MythTV, in cases when manufacturer ID of a CAM and CA system ID differ.
dv1394, eth1394, ieee1394, ohci1394, pcilynx, raw1394, sbp2, video1394
  • These drivers, a.k.a. the Linux1394 driver stack, have been removed.
    firewire-ohci replaces ohci1394.
    firewire-core replaces ieee1394, raw1394, video1394.
    firewire-net replaces eth1394.
    firewire-sbp2 replaces sbp2.
    There is no replacement for dv1394 and pcilynx.
    The drivers firedtv, init_ohci1394_dma, and nosy are not affected by these replacements.

Known issues: The rare and quirky controllers ALi M52xx, Apple UniNorth v1, NVIDIA NForce2 are even less well supported by firewire-ohci than by ohci1394. There were some ieee1394 based out-of-the-mainline drivers. Of them, only lisight, an audio driver for iSight webcams, seems still useful. Work is underway to reimplement it on top of firewire-core.


Linux 2.6.36

20 October 2010

This release brings several fixes and some new features for the newer firewire driver stack. Some of these fixes, as far as they affect libraw1394 based software, also require libraw1394 2.0.6 (which contains corresponding updates) or later. Furthermore, an older special-purpose stand-alone driver has now been merged into the mainline kernel: Nosy, a packet sniffer for PCILynx cards.

firewire-core, interface to userspace drivers
  • Fix transaction responses if multiple cards are present.
  • Fix lock transaction responses.
  • Add new incoming request event type which carries information about source node and extended transaction code. This addresses deficiencies of the prior ABI for address range mapping and FCP which made it impossible to write target-like drivers in userspace. It also prevented FFADO to work with two or more audio devices together on the bus. In order to use this ABI fix with libraw1394 based clients like e.g. FFADO, libraw1394 v2.0.6 will be required. (Due to be released soon.)
  • FW_CDEV_VERSION, defined in <linux/firewire-cdev.h>, is no longer being updated. Old libraw1394 code misused this constant. If your code needs to handle different firewire-cdev.h file versions, have a look at current libraw1394 code how it can be done. Basically, check for particular defined ioctls and event types.
  • Fix fw_cdev_event_bus_reset: Implement bm_node_id. Fix missing event on the local node's /dev/fw* after descriptor addition or removal.
  • New feature: Support multichannel isochronous reception. A corresponding update to libraw1394 has not been implemented yet.
  • New feature: PHY packet transmission and reception. Among else this allows to implement VersaPHY controllers or VersaPHY devices in userspace.
  • The address range allocation ioctl now allows to allocate a CSR anywhere in a region larger than the CSR.
  • Add more safeguards against bogus ioctl data and against multithread client race conditions.
  • Several updates to the inline documentation in <linux/firewire-cdev.h>.
firewire-core, bus management
  • Support the following CSRs on the local node: STATE_CLEAR/STATE_SET (cmstr and abdicate bits), NODE_IDS, RESET_START (as dummy), SPLIT_TIMEOUT (useful to FFADO with BeBoB devices with lots of channels), CYCLE_TIME write support, BUS_TIME, BUSY_TIMEOUT, PRIORITY_BUDGET, MAINT_UTILITY.
  • More careful bus manager routines WRT temporary transaction failures, Cycle Master activation.
  • Bus resets that were issued by userspace clients via bus reset ioctl or indirectly by descriptor addition or removal (also firewire-net insertion and removal) are now better integrated into bus management: The gap count is kept stable, and the period between such bus resets is forced to be 2 seconds or more. This period is necessary for isochronous resource reallocation, SBP-2 reconnect, and similar procedures.
firewire-ohci
  • Enable message-signaled interrupts (MSI) on native PCIe controllers. This includes Agere FW643E (i.e. FW643 rev07), but not FW643 rev06 and older nor VIA VT6315 nor JMicron JMB38x on which we continue to use classic pin-based interrupts due to hardware bugs. MSIs are furthermore not present on Texas Instruments PCIe FireWire controllers which are PCI devices with a PCI–PCIe bridge. — MSI support was initially also enabled on older FW643 and VT6317 which led to regressions in kernels 2.6.36...2.6.36.2 inclusive. This has been corrected in kernel 2.6.36.3.
  • Enable workaround for nonmonotonic Cycle Timer on Ricoh controllers. Cycle Timer is used by libdc1394 and by FFADO for reception timestamps.
firewire-sbp2
  • Fix stalls with "Unsolicited response" with some firmwares of 4-bay RAID enclosures.
  • Fix a memory leak in error cases.
nosy
  • "New" driver: Nosy is a traffic sniffer driver for Texas Instruments PCILynx/ PCILynx-2 based cards. The use cases for nosy are analysis of nonstandard protocols and as an aid in development of drivers, applications, or firmwares.
    Nosy was written by Kristian Høgsberg many years ago and maintained by him in a stand-alone source repository. Now the driver is available in the mainline kernel sources. Its userspace frontend, called nosy-dump, is also maintained and distributed with the kernel sources under tools/firewire/.
    PCILynx/ PCILynx-2 is a FireWire controller which is not OHCI-1394 compliant. This controller is found for example on IOI IOI-1394TT (PCI card), Unibrain Fireboard 400 PCI Lynx-2 (PCI card), Newer Technology FireWire 2 Go (CardBus card), and Apple Power Mac G3 blue & white (onboard controller).

There is also an obscure change to the kernel's Makefiles with a side effect: When both ohci1394 and firewire-ohci were installed but there was no modprobe blacklist configuration for one or both of them, then it was reportedly more likely in recent kernels that ohci1394 was being bound to FireWire controllers. In 2.6.36, it will more likely be firewire-ohci.


Linux 2.6.35

1 August 2010

This release brings minor fixes to the new firewire driver stack.

The old ieee1394 driver stack — i.e. ieee1394, ohci1394, pcilynx, sbp2, eth1394, raw1394, video1394, dv1394 — is now scheduled for removal in Linux 2.6.37.

firewire-core
  • Fix inaccessibility of certain Sony camcorders, caused by bus reset loops because of conflicts between firewire-core's and the camcorder firmware's bus management. Fixed by checking for IEEE 1394a compliance of the isochronous resource manager. Also fixed in Linux 2.6.34.1, 2.6.33.6, 2.6.32.16.
  • more robust allocation of transaction labels and time-out of transactions
  • lseek() is not useful with /dev/fw*; it is now failed instead of seemingly succeeding
firewire-ohci
  • access PHY registers more safely
  • enable IEEE 1394a enhancements in the physical layer and link layer consistently (or disable consistently on IEEE 1394-1995 hardware)
raw1394, video1394, dv1394
  • lseek() is not useful with /dev/raw1394, /dev/video1394/*, /dev/dv1394/*; it is now failed instead of seemingly succeeding

Known issues: firewire-ohci changes in this release caused slow-down and data corruption on some TI TSB82AA2 based cards. This regression is fixed in kernel 2.6.36 and 2.6.35.8.


Linux 2.6.34

16 May 2010

firewire-core
  • fix "giving up on config rom for node id..." with some devices with bogus configuration ROM, notably Panasonic AG-DV2500 tape deck
  • fix Model_ID in modalias (sysfs variable and uevent)
  • more consistency checks in userspace driver interface
  • add FW_CDEV_IOC_GET_CYCLE_TIMER2 ioctl for choice of local clock
  • put <linux/firewire-*.h> files under MIT license
  • remove incomplete support of Bus_Time CSR
firewire-ohci
  • Work around hardware that does not provide reliable cycle timer register access. Currently, this work around is active for the following known affected chips: ALi, NEC, VIA, TI TSB12LV22. A tool called test_cycle_time exists which can be used to detect faulty chips that require addition to firewire-ohci's internal quirks list. Reliable cycle timer access is needed for video reception timestamps and audio synchronization.
  • add module parameter that allows ad hoc activation of quirk fixes
  • fix detection of maximum available IR and IT DMA contexts
  • fixes for local (loopback) requests
firedtv
  • DMA mapping fixes
ohci1394_earlyinit
  • fix boot crash regression


Linux 2.6.33

24 February 2010

This release finally adapts the firedtv DVB driver to be usable with the new stack alternatively to the old stack. It furthermore brings a few fixes for the new stack along with the usual assortment of less visible updates.

Distributors who still ship the old stack (ieee1394, ohci1394, raw1394, sbp2, eth1394 and more) should now switch to the new one (firewire-core, firewire-ohci, firewire-sbp2, firewire-net). In the first iteration, those distributors might want to ship the old stack also (but blacklisted) as a fallback for their users if unforeseen problems with the newer replacement drivers are encountered.

The older FireWire stack contains several known problems which are not going to be fixed; instead, those issues are addressed by the new stack. An incomplete list of these issues is kept in bugzilla. We have a guide on migration from the older to the newer stack.

firewire-core
  • Properly support multiple concurrent FCP listeners. This is necessary if more than one process or driver requires continuous control over AV/C devices (e.g. camcorders, tape decks, audio devices, TV tuners).
  • Some small optimizations and fixes, among them improved Topology Map register handling.
  • Proper size check in the add_descriptor ioctl. Also fixed in Linux 2.6.32.8.
firewire-net
  • Fix a crash on SMP systems.
firewire-ohci
  • Always use packet-per-buffer mode for isochronous reception, not dual-buffer mode. Reasons to do so are different behavior of the modes under some circumstances, and hardware bugs in dual-buffer mode.
  • Fix possible crash with unusual isochronous reception parameters (CVE-2009-4138). Also fixed in Linux 2.6.32.2, 2.6.31.9, 2.6.27.42.
  • Fix crashes or image corruption during video reception with TSB43AB23 on 64 bit systems with more than 2 GB RAM. Also fixed in Linux 2.6.32.8.
  • Fix potential breakup of isochronous transmission on some controllers, e.g. probably O2Micro controllers.
firedtv
  • Port to new firewire stack. Depending on whether the kernel is being configured for ieee1394 (classic stack) or firewire (new stack) or both, the firedtv driver will automatically use the proper stack. This means that FireDTV users are no longer forced to use the old stack.


Linux 2.6.32

2 December 2009

This release fixes the new FireWire drivers for operation with FFADO (FireWire audio driver framework) and brings some other, minor updates. There are also fixes in libraw1394 required in order to run FFADO on top of the new drivers; these fixes have been released in libraw1394 v2.0.5.

firewire-core, firewire-ohci, raw1394
  • Fix a few obscure bugs which were unlikely to show up in practice.
firewire-ohci
  • Fix start-on-cycle feature of isochronous transmissions and receptions. Especially needed for FFADO.
  • Expose isochronous transmit cycle timestamps to firewire-core and thus to userspace drivers. Especially needed for FFADO.
firewire-sbp2
  • Fix potential bugs: login timeout, invalid SCSI status
firedtv
  • Fix automatic retuning of DVB-C cards after temporary loss of antenna signal.
  • Fix I/O to Conditional Access Module.
  • Improve module parameter for runtime debugging.


Linux 2.6.31

9 September 2009

This release brings improved support of fine-grained access permission policies for FireWire application programs in userspace, IP networking with the new FireWire driver stack, and support for FireWire disks larger than 2 TB (this is also available in some stable kernel sub-releases before 2.6.31, see below).

firewire-core, firewire-ohci, firewire-sbp2
  • No longer marked as "experimental" in the kernel configuration menu. Distributors who provided the older ieee1394 driver stack so far are encouraged to build and install both driver stacks. Note, the new stack does not yet support studio audio devices, nor FireDTV DVB interfaces. (Support is currently in development.) See Juju Migration for further guidance on switching to the new drivers.
  • Driver source files and header files have been reorganized. This only affects kernel driver developers.
firewire-core
  • Added the sysfs attribute "units" to node representations. Its path is /sys/bus/firewire/devices/fw[0-9]+/units and it contains tuples of specifier-ID:software-version of all units found on a node.
    This is used in new udev rules, released in udev v144, which selectively grant non-root users access to FireWire character device files of AV/C devices (camcorders, set top boxes, audio devices and more) and IIDC cameras (alias DCAM, industrial cameras and webcams) while other device types remain inaccessible to unprivileged users by default.
  • Be even more careful with Broadcast_Channel CSR accesses to avoid clashes with buggy firmwares.
  • Fixed rarely occurring bugs related to shutdown of isochronous DMA contexts and to DMA-mapping on platforms with non-cachecoherent DMA. (The latter fix introduced a regression into 2.6.31-rc1, fixed since 2.6.31-rc9.)
firewire-net
  • Added as new driver for IPv4 over 1394 for the new firewire stack, replacement of et1394 in the old stack. Both eth1394 and firewire-net are still considered experimental due to some remaining, though different, bugs in them.
firewire-ohci
  • Fix video reception on Ricoh R5C832.
  • Fix video reception from more than one camera simultaneously on Agere FW643.
firewire-sbp2
  • Added support for disks bigger than 2 TB. The necessary fix in our two SBP-2 initiator drivers has also been released in kernel 2.6.30.5 and 2.6.27.30.
    Note, volume sizes bigger than 2 TB also require specific support in the SBP-2 target chipset of FireWire disk or RAID enclosures. This is true for any operating system as initiator, not just Linux. Check with your enclosure vendor if in doubt.
  • Fix potential crash after "status write for unknown orb" events.
sbp2
  • Added support for disks bigger than 2 TB. See remarks at firewire-sbp2.


Linux 2.6.30

9 June 2009

Most of the changes relate to extensions to the <linux/firewire-cdev.h> API which are required for advanced usage by FireWire-enabled userspace applications, especially IIDC video capture.

With these updates, the newer firewire drivers are now superior to the older ieee1394 drivers in the fields of industrial video acquisition/ machine vision/ microscopy etc. — just like the new drivers have already been superior and preferred for mass storage (SBP-2) in the last two or three kernel releases.

(Regarding consumer video applications, the new drivers should now be functionally on par with — yet more secure than — the old drivers. Alas the new drivers cannot be used with studio audio equipment yet. IP networking with the new drivers has become available in kernel 2.6.31.)

firewire-core
  • Optionally expose the reception timestamp of each isochronous packet, not just of interrupt packets. This change is accompanied by an update of the constant FW_CDEV_VERSION from 1 to 2.
  • Add ioctls for isochronous resource management (allocation and deallocation of isochronous channels and bandwidth). These do not only accomplish what the corresponding libraw1394 functions can do, they also implement optional kernel-assisted reallocation and deallocation.
    This means that client programs do not need to implement reallocation in their bus reset handler anymore and often can get rid of bus reset handlers entirely. Also, isochronous resources can be released by the kernel if the client program crashes or shuts down improperly. The kernel-assisted variant of resource allocation also takes care of the grace period which is to be observed after bus resets.
  • Add ioctl to query the maximum transmission speed to/from a given node.
  • Add ioctl for broadcast write requests. This is for example useful to control multiple similar cameras at once. For device security reasons, broadcast write requests are restricted to addresses in Units Space.
  • Add ioctl for asynchronous stream transmission. Asynchronous streams are addressed to channels instead of nodes (like isochronous streams are tied to channels) but transmitted after asynchronous bus arbitrations (like asynchronous write requests, unlike isochronous streams).
  • Add various consistency checks to enforce proper cdev API usage.
  • Disallow the FW_CDEV_IOC_ADD_DESCRIPTOR ioctl on any other /dev/fw* than those of local nodes. This is because userland will typically maintain an access policy based on unit directories that are present on each node, and this ioctl may therefore influence accessibility of local nodes' device files.
  • Implement Broadcast_Channel register support for conformance with the 1394a bus management specification.
firedtv
  • Implement tuning of DVB-S2 boxes. Also implemented in kernel 2.6.29.1. This fixes tuning of standard definition channels. Reception of high definition channels is not yet implemented.
Personal tools