struct drm_xe_query_gt_list __user *query_ptr =
                u64_to_user_ptr(query->data);
        struct drm_xe_query_gt_list *gt_list;
+       int iter = 0;
        u8 id;
 
        if (query->size == 0) {
 
        for_each_gt(gt, xe, id) {
                if (xe_gt_is_media_type(gt))
-                       gt_list->gt_list[id].type = DRM_XE_QUERY_GT_TYPE_MEDIA;
+                       gt_list->gt_list[iter].type = DRM_XE_QUERY_GT_TYPE_MEDIA;
                else
-                       gt_list->gt_list[id].type = DRM_XE_QUERY_GT_TYPE_MAIN;
-               gt_list->gt_list[id].tile_id = gt_to_tile(gt)->id;
-               gt_list->gt_list[id].gt_id = gt->info.id;
-               gt_list->gt_list[id].reference_clock = gt->info.reference_clock;
+                       gt_list->gt_list[iter].type = DRM_XE_QUERY_GT_TYPE_MAIN;
+               gt_list->gt_list[iter].tile_id = gt_to_tile(gt)->id;
+               gt_list->gt_list[iter].gt_id = gt->info.id;
+               gt_list->gt_list[iter].reference_clock = gt->info.reference_clock;
                /*
                 * The mem_regions indexes in the mask below need to
                 * directly identify the struct
                 * assumption.
                 */
                if (!IS_DGFX(xe))
-                       gt_list->gt_list[id].near_mem_regions = 0x1;
+                       gt_list->gt_list[iter].near_mem_regions = 0x1;
                else
-                       gt_list->gt_list[id].near_mem_regions =
+                       gt_list->gt_list[iter].near_mem_regions =
                                BIT(gt_to_tile(gt)->id) << 1;
-               gt_list->gt_list[id].far_mem_regions = xe->info.mem_region_mask ^
-                       gt_list->gt_list[id].near_mem_regions;
+               gt_list->gt_list[iter].far_mem_regions = xe->info.mem_region_mask ^
+                       gt_list->gt_list[iter].near_mem_regions;
 
-               gt_list->gt_list[id].ip_ver_major =
+               gt_list->gt_list[iter].ip_ver_major =
                        REG_FIELD_GET(GMD_ID_ARCH_MASK, gt->info.gmdid);
-               gt_list->gt_list[id].ip_ver_minor =
+               gt_list->gt_list[iter].ip_ver_minor =
                        REG_FIELD_GET(GMD_ID_RELEASE_MASK, gt->info.gmdid);
-               gt_list->gt_list[id].ip_ver_rev =
+               gt_list->gt_list[iter].ip_ver_rev =
                        REG_FIELD_GET(GMD_ID_REVID, gt->info.gmdid);
+
+               iter++;
        }
 
        if (copy_to_user(query_ptr, gt_list, size)) {