what
implement RAM access on a remote machine via firewire, useful for debugging
how
controllers allow memory access (DMA) without host involvement unless the hosts sets up a filter (only windows seems to do this)
code
Might require patches from http://me.in-berlin.de/~s5r6/linux1394/updates/, and the very latest code from 2.6.16-rc1. Note that nodemgr.c then won't build against an older kernel, but this can easily be changed by changing '.uevent = ' to '.hotplug = ' on the offending line.
https://johannes.sipsolutions.net/files/dynamic-ieee1394-chardev.patch
This first patch implements dynamic minor numbers below the firewire major.
https://johannes.sipsolutions.net/files/node-interface.patch
This patch allows one to bind create an interface to a node.
https://johannes.sipsolutions.net/files/mem1394.h https://johannes.sipsolutions.net/files/mem1394.c https://johannes.sipsolutions.net/files/add-mem1394-to-build.patch
These files are for the mem1394 driver, the patch adds it to the kernel build system.
You'll need to set up udev too, add this rule:
KERNEL=="fwmem-[0-9]*", NAME="fwmem-%s{device/guid}"
If you want to build the modules without compiling the whole kernel, or say the kernel modules from the latest kernel, you can use this Makefile.
Attention!
Close all programs that have the device open before unloading the module, don't try to access with larger than about 2K reads (dd blocksize for example) and don't try unplugging (though this last case should be pretty much harmless).