How to replace bus_to_virt()?



Hi all,

is there a *direct* future-proof replacement for bus_to_virt()?

It appears there are already architectures which do not define a bus_to_virt() funtion or macro. If there isn't a direct replacement, is there at least a way to detect at compile time whether bus_to_virt() exists?

I am asking because the sbp2 driver uses bus_to_virt() if CONFIG_IEEE1394_SBP2_PHYS_DMA=y. I would like to replace this option by an automatic detection when the respective code in sbp2 is actually required.

The current implementation is this: Sbp2 uses bus_to_virt() to map from 1394 bus addresses (which are currently identical to local host bus addresses) to virtual addresses. These addresses are supplied by SBP-2 target devices and point to *arbitrary* locations within buffers. These buffers are supplied by the SCSI subsystem/ block IO subsystem. That is, sbp2 has no influence on the location of the buffers, nor has it influence on the location of the chunk of data which an SBP-2 target is reading or writing at a particular moment. But thanks to bus_to_virt(), sbp2 does not need to know which SCSI command buffer (and to which scatter/gather element in the buffer) a particular data transfer belongs to.

From what I found out so far, I am afraid I have to implement a totally different address mapping scheme for the cases where physical DMA is not available; i.e. a scheme that enables sbp2 to look up the s/g element to which a transfer is directed, based on the 1394 bus address of the transfer.
--
Stefan Richter
-=====-=-==- -=-- ====-
http://arcgraph.de/sr/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: How to replace bus_to_virt()?
    ... It appears there are already architectures which do not define a bus_to_virtfuntion or macro. ... If there isn't a direct replacement, is there at least a way to detect at compile time whether bus_to_virtexists? ... I would like to replace this option by an automatic detection when the respective code in sbp2 is actually required. ... Sbp2 uses bus_to_virtto map from 1394 bus addresses (which are currently identical to local host bus addresses) to virtual addresses. ...
    (Linux-Kernel)
  • [patch 3/3] ieee1394: sbp2: let nodemgr retry node updates during bus reset series
    ... sbp2 was too quick to run away screaming "Failed to reconnect to sbp2 ... when additional nodes on the same bus came online. ...
    (Linux-Kernel)