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)
commitfcd46b34425da52703fe65b7f08850c509dcb0ed
treea133fd9d86111bbf3de37d882c00e8c3709eea8e
parent8bc588e0e585bc9085df75e84d4d5635f45cf360
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