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