diff options
author | Maxime Schmitt <maxime.schmitt91@gmail.com> | 2022-08-23 20:25:57 +0200 |
---|---|---|
committer | Maxime Schmitt <maxime.schmitt91@gmail.com> | 2022-08-23 20:25:57 +0200 |
commit | 7c7059aeb02e0a394a0ff16669729c3ecf3f1c07 (patch) | |
tree | e3fdf1cd8c6f6046f0087db49108ee626afab89d | |
parent | 8afaee4fd96849d6c98ce02d8f06d2e7b8cb7028 (diff) | |
parent | cf613fb2f6c3a2026ab10a057fd48a3f685086a7 (diff) |
Merge branch 'fix_amdgpu_device_handle_segfault'
-rw-r--r-- | src/extract_gpuinfo_amdgpu.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/extract_gpuinfo_amdgpu.c b/src/extract_gpuinfo_amdgpu.c index b6ea8ca..5c92dde 100644 --- a/src/extract_gpuinfo_amdgpu.c +++ b/src/extract_gpuinfo_amdgpu.c @@ -357,14 +357,15 @@ static bool gpuinfo_amdgpu_get_device_handles( int fd = -1; - for (unsigned int j = DRM_NODE_MAX - 1;; j--) { - if (!(1 << j & devs[i]->available_nodes)) - continue; - - if ((fd = open(devs[i]->nodes[j], O_RDWR)) < 0) - continue; - - break; + // Try render node first + if (1 << DRM_NODE_RENDER & devs[i]->available_nodes) { + fd = open(devs[i]->nodes[DRM_NODE_RENDER], O_RDWR); + } + if (fd < 0) { + // Fallback to primary node (control nodes are unused according to the DRM documentation) + if (1 << DRM_NODE_PRIMARY & devs[i]->available_nodes) { + fd = open(devs[i]->nodes[DRM_NODE_PRIMARY], O_RDWR); + } } if (fd < 0) |