Mesa (master): radv: check driver name before calling amdgpu.

Dave Airlie airlied at kemper.freedesktop.org
Tue Oct 11 22:57:30 UTC 2016


Module: Mesa
Branch: master
Commit: fc28f89157254ddf638e52ea20cdfe675ab4c382
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fc28f89157254ddf638e52ea20cdfe675ab4c382

Author: Dave Airlie <airlied at redhat.com>
Date:   Tue Oct 11 15:21:25 2016 +1000

radv: check driver name before calling amdgpu.

This checks the kernel driver name is amdgpu before calling
libdrm_amdgpu.

This avoids the following error:
amdgpu_device_initialize: DRM version is 1.6.0 but this driver is only compatible with 3.x.x

when run on a machine with i915 graphics as well as amdgpu.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/amd/vulkan/radv_device.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c
index 79ef8ed..6e06863 100644
--- a/src/amd/vulkan/radv_device.c
+++ b/src/amd/vulkan/radv_device.c
@@ -32,6 +32,7 @@
 #include "radv_private.h"
 #include "util/strtod.h"
 
+#include <xf86drm.h>
 #include <amdgpu.h>
 #include <amdgpu_drm.h>
 #include "amdgpu_id.h"
@@ -55,6 +56,7 @@ radv_physical_device_init(struct radv_physical_device *device,
 			  const char *path)
 {
 	VkResult result;
+	drmVersionPtr version;
 	int fd;
 
 	fd = open(path, O_RDWR | O_CLOEXEC);
@@ -62,6 +64,20 @@ radv_physical_device_init(struct radv_physical_device *device,
 		return vk_errorf(VK_ERROR_INCOMPATIBLE_DRIVER,
 				 "failed to open %s: %m", path);
 
+	version = drmGetVersion(fd);
+	if (!version) {
+		close(fd);
+		return vk_errorf(VK_ERROR_INCOMPATIBLE_DRIVER,
+				 "failed to get version %s: %m", path);
+	}
+
+	if (strcmp(version->name, "amdgpu")) {
+		drmFreeVersion(version);
+		close(fd);
+		return VK_ERROR_INCOMPATIBLE_DRIVER;
+	}
+	drmFreeVersion(version);
+
 	device->_loader_data.loaderMagic = ICD_LOADER_MAGIC;
 	device->instance = instance;
 	assert(strlen(path) < ARRAY_SIZE(device->path));




More information about the mesa-commit mailing list