linux/drivers/firewire
Takashi Sakamoto ac9184fbb8 firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards
VIA VT6306/6307/6308 provides PCI interface compliant to 1394 OHCI. When
the hardware is combined with Asmedia ASM1083/1085 PCIe-to-PCI bus bridge,
it appears that accesses to its 'Isochronous Cycle Timer' register (offset
0xf0 on PCI memory space) often causes unexpected system reboot in any
type of AMD Ryzen machine (both 0x17 and 0x19 families). It does not
appears in the other type of machine (AMD pre-Ryzen machine, Intel
machine, at least), or in the other OHCI 1394 hardware (e.g. Texas
Instruments).

The issue explicitly appears at a commit dcadfd7f7c ("firewire: core:
use union for callback of transaction completion") added to v6.5 kernel.
It changed 1394 OHCI driver to access to the register every time to
dispatch local asynchronous transaction. However, the issue exists in
older version of kernel as long as it runs in AMD Ryzen machine, since
the access to the register is required to maintain bus time. It is not
hard to imagine that users experience the unexpected system reboot when
generating bus reset by plugging any devices in, or reading the register
by time-aware application programs; e.g. audio sample processing.

This commit suppresses the unexpected system reboot in the combination of
hardware. It avoids the access itself. As a result, the software stack can
not provide the hardware time anymore to unit drivers, userspace
applications, and nodes in the same IEEE 1394 bus. It brings apparent
disadvantage since time-aware application programs require it, while
time-unaware applications are available again; e.g. sbp2.

Cc: stable@vger.kernel.org
Reported-by: Jiri Slaby <jirislaby@kernel.org>
Closes: https://bugzilla.suse.com/show_bug.cgi?id=1215436
Reported-by: Mario Limonciello <mario.limonciello@amd.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217994
Reported-by: Tobias Gruetzmacher <tobias-lists@23.gs>
Closes: https://sourceforge.net/p/linux1394/mailman/message/58711901/
Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2240973
Closes: https://bugs.launchpad.net/linux/+bug/2043905
Link: https://lore.kernel.org/r/20240102110150.244475-1-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
2024-01-05 21:28:08 +09:00
..
.kunitconfig firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
core-card.c Merge branch 'for-linus' into for-next 2022-05-23 07:48:27 +02:00
core-cdev.c firewire: cdev: implement new event relevant to phy packet with time stamp 2023-05-30 08:12:40 +09:00
core-device.c firewire: core: fix possible memory leak in create_units() 2023-11-30 09:16:35 +09:00
core-iso.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
core-topology.c Revert "firewire: core: obsolete usage of GFP_ATOMIC at building node tree" 2023-09-15 18:37:52 +09:00
core-transaction.c firewire: core: implement variations to send request and wait for response with time stamp 2023-05-30 08:12:40 +09:00
core.h firewire: Annotate struct fw_node with __counted_by 2023-11-05 21:15:17 +09:00
init_ohci1394_dma.c firewire: init_ohci1394_dma: use correct function names in comments 2023-04-24 09:19:35 +09:00
Kconfig firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
Makefile firewire: add KUnit test to check layout of UAPI structures 2023-05-30 08:12:39 +09:00
net.c firewire: net: fix use after free in fwnet_finish_incoming_packet() 2023-06-24 14:03:46 +09:00
nosy-user.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
nosy.c firewire: nosy: switch from 'pci_' to 'dma_' API 2021-07-05 22:23:15 +02:00
nosy.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
ohci.c firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards 2024-01-05 21:28:08 +09:00
ohci.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sbp2.c scsi: Change SCSI device boolean fields to single bit flags 2023-11-24 20:44:21 -05:00
uapi-test.c firewire: fix build failure due to missing module license 2023-05-30 19:37:29 +09:00