]> git.baikalelectronics.ru Git - kernel.git/commit
firewire: Enable remote DMA above 4 GB
authorStefan Richter <stefanr@s5r6.in-berlin.de>
Sat, 18 Jan 2014 16:32:20 +0000 (17:32 +0100)
committerStefan Richter <stefanr@s5r6.in-berlin.de>
Mon, 20 Jan 2014 00:11:13 +0000 (01:11 +0100)
commitf44dda8f361e4db1572108a70946626d809044ba
treea133fd9d86111bbf3de37d882c00e8c3709eea8e
parentd8fa276b83330e46a37bd5f423fd3a1566de7345
firewire: Enable remote DMA above 4 GB

This makes all of a machine's memory accessible to remote debugging via
FireWire, using the physical response unit (i.e. RDMA) of OHCI-1394 link
layer controllers.

This requires actual support by the controller.  The only ones currently
known to support it are Agere/LSI FW643.  Most if not all other OHCI-1394
controllers do not implement the optional Physical Upper Bound register.
With them, RDMA will continue to be limited to the lowermost 4 GB.

firewire-ohci's startup message in the kernel log is augmented to tell
whether the controller does expose more than 4 GB to RDMA.

While OHCI-1394 allows for a maximum Physical Upper Bound of
0xffff'0000'0000 (near 256 TB), this implementation sets it to
0x8000'0000'0000 (128 TB) in order to avoid interference with applications
that require interrupt-served asynchronous request reception at
respectively low addresses.

Note, this change does not switch remote DMA on.  It only increases the
range of remote access to all memory (instead of just 4 GB) whenever
remote DMA was switched on by other means.  The latter is achieved by
setting firewire-ohci's remote_dma parameter, or if the physical DMA
filter is opened through firewire-sbp2.

Derived from patch "firewire: Enable physical DMA above 4GB" by
Peter Hurley <peter@hurleysoftware.com> from March 27, 2013.

Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Documentation/debugging-via-ohci1394.txt
drivers/firewire/core-transaction.c
drivers/firewire/core.h
drivers/firewire/ohci.c