diff options
author | Qiang Yu <Qiang.Yu@amd.com> | 2016-06-06 12:29:16 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-06-06 12:29:16 -0400 |
commit | 70b64073f7d1bf56a30f7a809bd984d3ad688b9f (patch) | |
tree | 4ada527261de7ef82d2b725d75b9d93fa5f69c70 | |
parent | 361d0a88981628f0f20440262f02bfa3e175fa8b (diff) |
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.
Reviewed-by: Jim Qu <Jim.Qu@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Qiang Yu <Qiang.Yu@amd.com>
-rw-r--r-- | xf86drm.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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 |