1 // SPDX-License-Identifier: MIT 2 /* 3 * Copyright © 2024 Intel Corporation 4 */ 5 6 #include <linux/atomic.h> 7 8 #include <drm/drm_print.h> 9 10 #include "xe_gt.h" 11 #include "xe_gt_stats.h" 12 13 /** 14 * xe_gt_stats_incr - Increments the specified stats counter 15 * @gt: GT structure 16 * @id: xe_gt_stats_id type id that needs to be incremented 17 * @incr: value to be incremented with 18 * 19 * Increments the specified stats counter. 20 */ 21 void xe_gt_stats_incr(struct xe_gt *gt, const enum xe_gt_stats_id id, int incr) 22 { 23 if (id >= __XE_GT_STATS_NUM_IDS) 24 return; 25 26 atomic64_add(incr, >->stats.counters[id]); 27 } 28 29 static const char *const stat_description[__XE_GT_STATS_NUM_IDS] = { 30 "tlb_inval_count", 31 "vma_pagefault_count", 32 "vma_pagefault_kb", 33 }; 34 35 /** 36 * xe_gt_stats_print_info - Print the GT stats 37 * @gt: GT structure 38 * @p: drm_printer where it will be printed out. 39 * 40 * This prints out all the available GT stats. 41 */ 42 int xe_gt_stats_print_info(struct xe_gt *gt, struct drm_printer *p) 43 { 44 enum xe_gt_stats_id id; 45 46 for (id = 0; id < __XE_GT_STATS_NUM_IDS; ++id) 47 drm_printf(p, "%s: %lld\n", stat_description[id], 48 atomic64_read(>->stats.counters[id])); 49 50 return 0; 51 } 52