blob: 40ba2ded1ff9ce9a80cd2fc517e29aa7c5a14ef9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
From 9d50d529f35b5ec2e9300bcff55fca1da84f75ec Mon Sep 17 00:00:00 2001
From: Qiang Yu <Qiang.Yu@amd.com>
Date: Mon, 30 May 2016 21:45:47 +0800
Subject: [PATCH 059/117] drm: fix multi GPU drmGetDevices only return one
device
When multi GPU present, after drmFoldDuplicatedDevices
merge same busid deveces, two different devices may be
seperated by zero in local_devices[]. The for loop
should check all local_devices instead of exit when
meet a zero.
Change-Id: I0b655f795727492bd7886cb60e07832bd9849d89
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com>
Reviewed-by Jim Qu <Jim.Qu@amd.com>
---
xf86drm.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/xf86drm.c b/xf86drm.c
index 5f587d9..6689f7c 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -3267,7 +3267,10 @@ int drmGetDevices(drmDevicePtr devices[], int max_devices)
drmFoldDuplicatedDevices(local_devices, node_count);
device_count = 0;
- for (i = 0; i < node_count && local_devices[i]; i++) {
+ for (i = 0; i < node_count; i++) {
+ if (!local_devices[i])
+ continue;
+
if ((devices != NULL) && (device_count < max_devices))
devices[device_count] = local_devices[i];
else
--
2.7.4
|