summaryrefslogtreecommitdiff
path: root/src/dev/virtio/base.cc
diff options
context:
space:
mode:
authorAndreas Sandberg <andreas.sandberg@arm.com>2016-11-07 18:16:51 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-04-03 16:36:15 +0000
commitba00d7449df87c99bf8aca97a877b493c14f4866 (patch)
treeaf6e8b32972ddfe6a874b0b9e9ffaf90aded973d /src/dev/virtio/base.cc
parentcd9ca71b25e0b119c04eb87d4d1d74cfc90587e9 (diff)
downloadgem5-ba00d7449df87c99bf8aca97a877b493c14f4866.tar.xz
dev: Add a dummy VirtIO device
VirtIO transport interfaces always expect a VirtIO device pointer. However, there are cases (in particular when using VirtIO's MMIO interface) where we want to instantiate an interface without a device. Add a dummy device using VirtIO device ID 0 and no queues to handle this use case. Change-Id: I6cbe12fd403903ef585be40279c3b1321fde48ff Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-by: Nikos Nikoleris <nikos.nikoleris@arm.com> Reviewed-by: Sudhanshu Jha <sudhanshu.jha@arm.com> Reviewed-by: Rekai Gonzalez Alberquilla <rekai.gonzalezalberquilla@arm.com> Reviewed-on: https://gem5-review.googlesource.com/2325 Reviewed-by: Weiping Liao <weipingliao@google.com> Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Diffstat (limited to 'src/dev/virtio/base.cc')
-rw-r--r--src/dev/virtio/base.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/dev/virtio/base.cc b/src/dev/virtio/base.cc
index f098784d0..61dd3069f 100644
--- a/src/dev/virtio/base.cc
+++ b/src/dev/virtio/base.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2014 ARM Limited
+ * Copyright (c) 2014, 2016 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -41,6 +41,7 @@
#include "debug/VIO.hh"
#include "params/VirtIODeviceBase.hh"
+#include "params/VirtIODummyDevice.hh"
VirtDescriptor::VirtDescriptor(PortProxy &_memProxy, VirtQueue &_queue,
Index descIndex)
@@ -477,3 +478,15 @@ VirtIODeviceBase::registerQueue(VirtQueue &queue)
{
_queues.push_back(&queue);
}
+
+
+VirtIODummyDevice::VirtIODummyDevice(VirtIODummyDeviceParams *params)
+ : VirtIODeviceBase(params, ID_INVALID, 0, 0)
+{
+}
+
+VirtIODummyDevice *
+VirtIODummyDeviceParams::create()
+{
+ return new VirtIODummyDevice(this);
+}