From 35e6003ba5ff273e9832a7224bb90c3c1da7783d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 21 Feb 2017 17:00:54 +0400 Subject: [PATCH] nodedev: add DRMDevice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit drm capability has been proposed for libvirt 3.1, it provide Direct Rendering Manager (DRM) devices. Signed-off-by: Marc-André Lureau --- tests/nodedev.py | 15 +++++++++++++++ tests/testdriver.xml | 27 +++++++++++++++++++++++++++ virtinst/nodedev.py | 12 ++++++++++++ 3 files changed, 54 insertions(+) diff --git a/tests/nodedev.py b/tests/nodedev.py index 0d214afe4..15e54b1d3 100644 --- a/tests/nodedev.py +++ b/tests/nodedev.py @@ -236,6 +236,21 @@ class TestNodeDev(unittest.TestCase): "type": "disk"} self._testCompare(devname, vals) + def testDRMDevice(self): + devname = "drm_renderD129" + vals = {"name": "drm_renderD129", + "parent": "pci_0000_00_02_0", + "devnodes": [ + {"path": "/dev/dri/renderD129", "node_type": "dev"}, + {"path": "/dev/dri/by-path/pci-0000:00:02.0-render", "node_type": "link"}, + {"path": "/dev/dri/by-id/foo-render", "node_type": "link"} + ], + "device_type": NodeDevice.CAPABILITY_TYPE_DRM, + "drm_type": "render"} + dev = self._testCompare(devname, vals) + self.assertEqual(dev.drm_pretty_name(conn), + "0000:00:02:0 Intel Corporation HD Graphics 530 (render)") + def testUnknownDevice(self): vals = {"name": "foodevice", "parent": "computer", "device_type": "frobtype"} diff --git a/tests/testdriver.xml b/tests/testdriver.xml index daf74f26d..ff1f97a7d 100644 --- a/tests/testdriver.xml +++ b/tests/testdriver.xml @@ -3469,7 +3469,34 @@ ba + + pci_0000_00_02_0 + /sys/devices/pci0000:00/0000:00:02.0 + computer + + i915 + + + 0 + 0 + 2 + 0 + HD Graphics 530 + Intel Corporation + + + + drm_renderD129 + /sys/devices/pci0000:00/0000:00:02.0/drm/renderD129 + /dev/dri/renderD129 + /dev/dri/by-path/pci-0000:00:02.0-render + /dev/dri/by-id/foo-render + pci_0000_00_02_0 + + render + + diff --git a/virtinst/nodedev.py b/virtinst/nodedev.py index 07ffe01e3..f27cfbb27 100644 --- a/virtinst/nodedev.py +++ b/virtinst/nodedev.py @@ -54,6 +54,7 @@ class NodeDevice(XMLBuilder): CAPABILITY_TYPE_STORAGE = "storage" CAPABILITY_TYPE_SCSIBUS = "scsi_host" CAPABILITY_TYPE_SCSIDEV = "scsi" + CAPABILITY_TYPE_DRM = "drm" @staticmethod def lookupNodedevFromString(conn, idstring): @@ -328,6 +329,15 @@ class SCSIBus(NodeDevice): wwpn = XMLProperty("./capability/capability[@type='fc_host']/wwpn") +class DRMDevice(NodeDevice): + drm_type = XMLProperty("./capability/type") + + def drm_pretty_name(self, conn): + parent = NodeDevice.lookupNodedevFromString(conn, self.parent) + + return "%s (%s)" % (parent.pretty_name(), self.drm_type) + + def _AddressStringToHostdev(conn, addrstr): from .devicehostdev import VirtualHostDevice hostdev = VirtualHostDevice(conn) @@ -410,5 +420,7 @@ def _typeToDeviceClass(t): return SCSIBus elif t == NodeDevice.CAPABILITY_TYPE_SCSIDEV: return SCSIDevice + elif t == NodeDevice.CAPABILITY_TYPE_DRM: + return DRMDevice else: return NodeDevice