---
man/intel_gpu_top.rst | 2 +-
tools/intel_gpu_top.c | 6 ++++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/man/intel_gpu_top.rst b/man/intel_gpu_top.rst
index b0c95446a011..3317e04816b4 100644
--- a/man/intel_gpu_top.rst
+++ b/man/intel_gpu_top.rst
@@ -85,7 +85,7 @@ Filter types: ::
JSON OUTPUT
===========
-To parse the JSON as output by the tool the consumer should wrap its entirety into square brackets ([ ]). This will make each sample point a JSON array element and will avoid "Multiple root elements" JSON validation error.
+JSON output will be correctly terminated when the tool cleanly exits,
otherwise one square bracket needs to be added before parsing.
LIMITATIONS
===========
diff --git a/tools/intel_gpu_top.c b/tools/intel_gpu_top.c
index 6de8a164fcff..c4d98de4fe31 100644
--- a/tools/intel_gpu_top.c
+++ b/tools/intel_gpu_top.c
@@ -2597,6 +2597,9 @@ int main(int argc, char **argv)
scan_clients(clients, false);
codename = igt_device_get_pretty_name(&card, false);
+ if (output_mode == JSON)
+ printf("[\n");
+
while (!stop_top) {
struct clients *disp_clients;
bool consumed = false;
@@ -2683,6 +2686,9 @@ int main(int argc, char **argv)
usleep(period_us);
}
+ if (output_mode == JSON)
+ printf("]\n");
+
if (clients)
free_clients(clients);
--
2.34.1