dev: StreamID generation in DMA device
authorGiacomo Travaglini <giacomo.travaglini@arm.com>
Mon, 28 Jan 2019 12:37:51 +0000 (12:37 +0000)
committerGiacomo Travaglini <giacomo.travaglini@arm.com>
Fri, 3 May 2019 08:38:12 +0000 (08:38 +0000)
commitb6d60e82ddfed6a67be4d334841b77d9e8813c0b
tree716b350c2f4f23989908d839a1c319a9768b2bbc
parent6af360ec8c826f32cec241bd8408f208eac8171f
dev: StreamID generation in DMA device

This patch is adding a StreamID tag to any DMA Packet. StreamIDs are
tags which are used by IOMMUs to distinguish between different
devices/functions.

For PCI devices for example, the RID (Pci Bus number, Pci Device
number, Pci Function number) could be stored in the Packet streamID
field.

For the DmaDevice base class, a simple pair of (Sub)StreamIDs has been
provided.  This is basically attaching a fixed (decided at python config
time) streamID per device.  If a derived device wants to implement a
more elaborate packet tagger (for example if it wants to have more than
one streamID), it needs to pass a different StreamID and SubstreamID to
the DmaPort interface (like dmaAction).

Change-Id: Ia17cf00437f7d3eb79211c1374134b174f90de59
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/16749
Reviewed-by: Daniel Carvalho <odanrc@yahoo.com.br>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/dev/Device.py
src/dev/dma_device.cc
src/dev/dma_device.hh