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>
This commit is contained in:
@@ -84,6 +84,13 @@ class DmaDevice(PioDevice):
|
||||
abstract = True
|
||||
dma = MasterPort("DMA port")
|
||||
|
||||
sid = Param.Unsigned(0,
|
||||
"Stream identifier used by an IOMMU to distinguish amongst "
|
||||
"several devices attached to it")
|
||||
ssid = Param.Unsigned(0,
|
||||
"Substream identifier used by an IOMMU to distinguish amongst "
|
||||
"several devices attached to it")
|
||||
|
||||
|
||||
class IsaFake(BasicPioDevice):
|
||||
type = 'IsaFake'
|
||||
|
||||
Reference in New Issue
Block a user