From: Tvrtko Ursulin <[email protected]>

Add a check if client stats are present to init_clients() so that the
returned clients data can be null from the start. This prevents the client
stats header to be printed on old kernels.

Signed-off-by: Tvrtko Ursulin <[email protected]>
---
 tools/intel_gpu_top.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index e22e3bedacbe..7311038a39f4 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -671,9 +671,14 @@ struct clients {
 
 static struct clients *init_clients(const char *drm_card)
 {
-       struct clients *clients = malloc(sizeof(*clients));
+       struct clients *clients;
        const char *slash;
        ssize_t ret;
+       int dir;
+
+       clients = malloc(sizeof(*clients));
+       if (!clients)
+               return NULL;
 
        memset(clients, 0, sizeof(*clients));
 
@@ -688,6 +693,14 @@ static struct clients *init_clients(const char *drm_card)
                       "/sys/class/drm/%s/clients/", slash);
        assert(ret > 0 && ret < sizeof(clients->sysfs_root));
 
+       dir = open(clients->sysfs_root, O_DIRECTORY | O_RDONLY);
+       if (dir < 0) {
+               free(clients);
+               clients = NULL;
+       } else {
+               close(dir);
+       }
+
        return clients;
 }
 
@@ -2519,8 +2532,10 @@ int main(int argc, char **argv)
 
        clients = init_clients(card.pci_slot_name[0] ? card.card : NULL);
        init_engine_classes(engines);
-       clients->num_classes = engines->num_classes;
-       clients->class = engines->class;
+       if (clients) {
+               clients->num_classes = engines->num_classes;
+               clients->class = engines->class;
+       }
 
        pmu_sample(engines);
        scan_clients(clients);
-- 
2.27.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to