A patch has been released for Linux against unexpected PC reboots on AMD Ryzen when connecting FireWire devices

A patch has been released for Linux against unexpected PC reboots on AMD Ryzen when connecting FireWire devices

At the beginning of January 2024, a patch was released for the new branch of Linux 6.7, which is under development, against unexpected reboots of PCs on AMD Ryzen when connecting devices via FireWire. The update was released by Linux kernel component maintainer Takashi Sakamoto (Takashi Sakamoto), who plans to support the code for legacy computer devices using the FireWire (IEEE 1394) interface standard until 2029.

Fortunately, FireWire has long been obsolete and is not very common now. But for many years this standard has been used by manufacturers of equipment and special systems for digital video and/or audio processing.

Recently, there have been several reports of errors related to FireWire problems in modern versions of the Linux kernel. The developers have found that most incidents of unexpected OS reboots are related to AMD Ryzen PCs.

The VIA VT6306/6307/6308 provides access to a PCI interface compliant with the 1394 OHCI standard. When the hardware is bus bridged with the Asmedia ASM1083/1085 PCIe-PCI, attempting to access the Isochronous Cycle Timer register at offset 0xf0 in the PCI memory space often causes an unexpected system reboot at any what type AMD Ryzen (0x17 and 0x19 families). The problem does not appear on a different type of PC (with AMD processors other than Ryzen or Intel) or when using other OHCI 1394 hardware (such as Texas Instruments).

The problem is clearly manifested in the dcadfd7f7c74 (firewire: core: use union for callback of transaction completion) commit added to the Linux v6.5 kernel. It changed the behavior of the 1394 OHCI driver to access the register every time to send a local asynchronous transaction. However, the problem also exists in older versions of the Linux kernel while running on an AMD Ryzen machine, as register access is required to support the bus time parameter. As a result, users experience an unexpected system reboot when the bus is reset by connecting any external devices or attempting to read a register with time-sensitive applications, such as for processing audio samples.

This patch suppresses unexpected system reboots along with the hardware. This prevents access. As a result, the software stack can no longer provide correct access to the timer hardware parameter for drivers, user-space applications, and elements on the same IEEE 1394 bus. the rest of the programs that do not work with these timers are available again, for example, sbp2″,

– Explained the essence of Sakamoto’s problem.

In April 2023, Sakamoto volunteered to oversee the FireWire subsystem for Linux for six years and will work on core Firewire features and sound drivers for the few remaining users who interact with their gadgets via this connection standard. Sakamoto hopes his work will help users transition from FireWire to more modern technology standards, such as USB 2.0.

Sakamoto took over from Stefan Richter, who had not made any changes to the Linux kernel code in this direction since 2022. Linux support for FireWire is expected to end no earlier than 2029.

FireWire is one of the oldest standards in modern computer history. It began being developed by Apple back in 1986 as a serial bus solution for high-speed communications and worked like USB ports, allowing users to connect external devices to their computers. But FireWire has several advantages over the original USB versions, including Thunderbolt-like daisy-chain support (up to 63 devices) and peer-to-peer networking.

The original version of FireWire was released in 1995 and had transfer speeds of up to 400 Mbps, as well as the ability to supply power to connected devices.

The FireWire standard has gone through five revisions in total, with the final version released in 2012 offering a much faster bandwidth of 1.57 Gbps. After 2012, FireWire support was effectively discontinued as Apple introduced its new Thunderbolt standard. The first iteration of Thunderbolt was significantly more functional than FireWire, with a bandwidth of 20 Gbps and the use of 4 PCIe 2.0 lanes. Thunderbolt also features DisplayPort 1.1a for controlling monitors.

Linux is the last operating system that still supports FireWire. Apple stopped supporting the standard a few years ago, and Microsoft stopped supporting FireWire in Windows 10.

Related posts