configs: Handle various DMA devices in GPU_VIPER

Viper is checking for the dma's type before making the port assignment.
In FullSystem mode the IDE device is a PortRef and does not have an
attribute 'type.' This handles the various types a bit better and
ensures that IDE device, the protocol tester, and upcoming DMA devices
related to FullSystem can be added.

Change-Id: I6879b25c6aabbbc22b0ee8dc9cbfec6399f70daa
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/44806
Reviewed-by: Matthew Poremba <matthew.poremba@amd.com>
Maintainer: Matthew Poremba <matthew.poremba@amd.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Matthew Poremba
2021-04-23 18:52:36 -05:00
parent 70abb2dcfd
commit f0e2c7cfc7

View File

@@ -776,11 +776,16 @@ def create_system(options, full_system, system, dma_devices, bootmem,
dma_cntrl = DMA_Controller(version=i, dma_sequencer=dma_seq, dma_cntrl = DMA_Controller(version=i, dma_sequencer=dma_seq,
ruby_system=ruby_system) ruby_system=ruby_system)
exec('system.dma_cntrl%d = dma_cntrl' % i) exec('system.dma_cntrl%d = dma_cntrl' % i)
if dma_device.type == 'MemTest':
# IDE doesn't have a .type but seems like everything else does.
if not hasattr(dma_device, 'type'):
exec('system.dma_cntrl%d.dma_sequencer.slave = dma_device' % i)
elif dma_device.type == 'MemTest':
exec('system.dma_cntrl%d.dma_sequencer.slave = dma_devices.test' exec('system.dma_cntrl%d.dma_sequencer.slave = dma_devices.test'
% i) % i)
else: else:
exec('system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma' % i) exec('system.dma_cntrl%d.dma_sequencer.slave = dma_device.dma' % i)
dma_cntrl.requestToDir = MessageBuffer(buffer_size=0) dma_cntrl.requestToDir = MessageBuffer(buffer_size=0)
dma_cntrl.requestToDir.master = ruby_system.network.slave dma_cntrl.requestToDir.master = ruby_system.network.slave
dma_cntrl.responseFromDir = MessageBuffer(buffer_size=0) dma_cntrl.responseFromDir = MessageBuffer(buffer_size=0)