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>
main
Qiang Yu 2016-06-06 12:29:16 -04:00 committed by Alex Deucher
parent 361d0a8898
commit 70b64073f7
1 changed files with 4 additions and 1 deletions

View File

@ -3267,7 +3267,10 @@ int drmGetDevices(drmDevicePtr devices[], int max_devices)
drmFoldDuplicatedDevices(local_devices, node_count); drmFoldDuplicatedDevices(local_devices, node_count);
device_count = 0; 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)) if ((devices != NULL) && (device_count < max_devices))
devices[device_count] = local_devices[i]; devices[device_count] = local_devices[i];
else else