xref: /linux/drivers/crypto/intel/qat/qat_common/adf_tl_debugfs.h (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
169e7649fSLucas Segarra Fernandez /* SPDX-License-Identifier: GPL-2.0-only */
269e7649fSLucas Segarra Fernandez /* Copyright (c) 2023 Intel Corporation. */
369e7649fSLucas Segarra Fernandez #ifndef ADF_TL_DEBUGFS_H
469e7649fSLucas Segarra Fernandez #define ADF_TL_DEBUGFS_H
569e7649fSLucas Segarra Fernandez 
669e7649fSLucas Segarra Fernandez #include <linux/types.h>
769e7649fSLucas Segarra Fernandez 
869e7649fSLucas Segarra Fernandez struct adf_accel_dev;
969e7649fSLucas Segarra Fernandez 
1069e7649fSLucas Segarra Fernandez #define MAX_COUNT_NAME_SIZE	32
1169e7649fSLucas Segarra Fernandez #define SNAPSHOT_CNT_MSG	"sample_cnt"
1269e7649fSLucas Segarra Fernandez #define RP_NUM_INDEX		"rp_num"
1369e7649fSLucas Segarra Fernandez #define PCI_TRANS_CNT_NAME	"pci_trans_cnt"
1469e7649fSLucas Segarra Fernandez #define MAX_RD_LAT_NAME		"max_rd_lat"
1569e7649fSLucas Segarra Fernandez #define RD_LAT_ACC_NAME		"rd_lat_acc_avg"
1669e7649fSLucas Segarra Fernandez #define MAX_LAT_NAME		"max_gp_lat"
1769e7649fSLucas Segarra Fernandez #define LAT_ACC_NAME		"gp_lat_acc_avg"
1869e7649fSLucas Segarra Fernandez #define BW_IN_NAME		"bw_in"
1969e7649fSLucas Segarra Fernandez #define BW_OUT_NAME		"bw_out"
2069e7649fSLucas Segarra Fernandez #define PAGE_REQ_LAT_NAME	"at_page_req_lat_avg"
2169e7649fSLucas Segarra Fernandez #define AT_TRANS_LAT_NAME	"at_trans_lat_avg"
2269e7649fSLucas Segarra Fernandez #define AT_MAX_UTLB_USED_NAME	"at_max_tlb_used"
2369e7649fSLucas Segarra Fernandez #define AT_GLOB_DTLB_HIT_NAME	"at_glob_devtlb_hit"
2469e7649fSLucas Segarra Fernandez #define AT_GLOB_DTLB_MISS_NAME	"at_glob_devtlb_miss"
2569e7649fSLucas Segarra Fernandez #define AT_PAYLD_DTLB_HIT_NAME	"tl_at_payld_devtlb_hit"
2669e7649fSLucas Segarra Fernandez #define AT_PAYLD_DTLB_MISS_NAME	"tl_at_payld_devtlb_miss"
27eb527077SLucas Segarra Fernandez #define RP_SERVICE_TYPE		"service_type"
28eb527077SLucas Segarra Fernandez 
29eb527077SLucas Segarra Fernandez #define ADF_TL_DBG_RP_ALPHA_INDEX(index) ((index) + 'A')
30eb527077SLucas Segarra Fernandez #define ADF_TL_DBG_RP_INDEX_ALPHA(alpha) ((alpha) - 'A')
31eb527077SLucas Segarra Fernandez 
32eb527077SLucas Segarra Fernandez #define ADF_TL_RP_REGS_FNAME		"rp_%c_data"
33eb527077SLucas Segarra Fernandez #define ADF_TL_RP_REGS_FNAME_SIZE		16
3469e7649fSLucas Segarra Fernandez 
3569e7649fSLucas Segarra Fernandez #define ADF_TL_DATA_REG_OFF(reg, qat_gen)	\
3669e7649fSLucas Segarra Fernandez 	offsetof(struct adf_##qat_gen##_tl_layout, reg)
3769e7649fSLucas Segarra Fernandez 
3869e7649fSLucas Segarra Fernandez #define ADF_TL_DEV_REG_OFF(reg, qat_gen)			\
3969e7649fSLucas Segarra Fernandez 	(ADF_TL_DATA_REG_OFF(tl_device_data_regs, qat_gen) +	\
4069e7649fSLucas Segarra Fernandez 	offsetof(struct adf_##qat_gen##_tl_device_data_regs, reg))
4169e7649fSLucas Segarra Fernandez 
4269e7649fSLucas Segarra Fernandez #define ADF_TL_SLICE_REG_OFF(slice, reg, qat_gen)		\
4369e7649fSLucas Segarra Fernandez 	(ADF_TL_DEV_REG_OFF(slice##_slices[0], qat_gen) +	\
4469e7649fSLucas Segarra Fernandez 	offsetof(struct adf_##qat_gen##_tl_slice_data_regs, reg))
4569e7649fSLucas Segarra Fernandez 
46eb527077SLucas Segarra Fernandez #define ADF_TL_RP_REG_OFF(reg, qat_gen)					\
47eb527077SLucas Segarra Fernandez 	(ADF_TL_DATA_REG_OFF(tl_ring_pairs_data_regs[0], qat_gen) +	\
48eb527077SLucas Segarra Fernandez 	offsetof(struct adf_##qat_gen##_tl_ring_pair_data_regs, reg))
49eb527077SLucas Segarra Fernandez 
5069e7649fSLucas Segarra Fernandez /**
5169e7649fSLucas Segarra Fernandez  * enum adf_tl_counter_type - telemetry counter types
5269e7649fSLucas Segarra Fernandez  * @ADF_TL_COUNTER_UNSUPPORTED: unsupported counter
5369e7649fSLucas Segarra Fernandez  * @ADF_TL_SIMPLE_COUNT: simple counter
5469e7649fSLucas Segarra Fernandez  * @ADF_TL_COUNTER_NS: latency counter, value in ns
5569e7649fSLucas Segarra Fernandez  * @ADF_TL_COUNTER_NS_AVG: accumulated average latency counter, value in ns
5669e7649fSLucas Segarra Fernandez  * @ADF_TL_COUNTER_MBPS: bandwidth, value in MBps
5769e7649fSLucas Segarra Fernandez  */
5869e7649fSLucas Segarra Fernandez enum adf_tl_counter_type {
5969e7649fSLucas Segarra Fernandez 	ADF_TL_COUNTER_UNSUPPORTED,
6069e7649fSLucas Segarra Fernandez 	ADF_TL_SIMPLE_COUNT,
6169e7649fSLucas Segarra Fernandez 	ADF_TL_COUNTER_NS,
6269e7649fSLucas Segarra Fernandez 	ADF_TL_COUNTER_NS_AVG,
6369e7649fSLucas Segarra Fernandez 	ADF_TL_COUNTER_MBPS,
6469e7649fSLucas Segarra Fernandez };
6569e7649fSLucas Segarra Fernandez 
6669e7649fSLucas Segarra Fernandez /**
6769e7649fSLucas Segarra Fernandez  * struct adf_tl_dbg_counter - telemetry counter definition
6869e7649fSLucas Segarra Fernandez  * @name: name of the counter as printed in the report
6969e7649fSLucas Segarra Fernandez  * @adf_tl_counter_type: type of the counter
7069e7649fSLucas Segarra Fernandez  * @offset1: offset of 1st register
7169e7649fSLucas Segarra Fernandez  * @offset2: offset of 2nd optional register
7269e7649fSLucas Segarra Fernandez  */
7369e7649fSLucas Segarra Fernandez struct adf_tl_dbg_counter {
7469e7649fSLucas Segarra Fernandez 	const char *name;
7569e7649fSLucas Segarra Fernandez 	enum adf_tl_counter_type type;
7669e7649fSLucas Segarra Fernandez 	size_t offset1;
7769e7649fSLucas Segarra Fernandez 	size_t offset2;
7869e7649fSLucas Segarra Fernandez };
7969e7649fSLucas Segarra Fernandez 
8069e7649fSLucas Segarra Fernandez #define ADF_TL_COUNTER(_name, _type, _offset)	\
8169e7649fSLucas Segarra Fernandez {	.name =		_name,			\
8269e7649fSLucas Segarra Fernandez 	.type =		_type,			\
8369e7649fSLucas Segarra Fernandez 	.offset1 =	_offset			\
8469e7649fSLucas Segarra Fernandez }
8569e7649fSLucas Segarra Fernandez 
8669e7649fSLucas Segarra Fernandez #define ADF_TL_COUNTER_LATENCY(_name, _type, _offset1, _offset2)	\
8769e7649fSLucas Segarra Fernandez {	.name =		_name,						\
8869e7649fSLucas Segarra Fernandez 	.type =		_type,						\
8969e7649fSLucas Segarra Fernandez 	.offset1 =	_offset1,					\
9069e7649fSLucas Segarra Fernandez 	.offset2 =	_offset2					\
9169e7649fSLucas Segarra Fernandez }
9269e7649fSLucas Segarra Fernandez 
9369e7649fSLucas Segarra Fernandez /* Telemetry counter aggregated values. */
9469e7649fSLucas Segarra Fernandez struct adf_tl_dbg_aggr_values {
9569e7649fSLucas Segarra Fernandez 	u64 curr;
9669e7649fSLucas Segarra Fernandez 	u64 min;
9769e7649fSLucas Segarra Fernandez 	u64 max;
9869e7649fSLucas Segarra Fernandez 	u64 avg;
9969e7649fSLucas Segarra Fernandez };
10069e7649fSLucas Segarra Fernandez 
10169e7649fSLucas Segarra Fernandez /**
10269e7649fSLucas Segarra Fernandez  * adf_tl_dbgfs_add() - Add telemetry's debug fs entries.
10369e7649fSLucas Segarra Fernandez  * @accel_dev: Pointer to acceleration device.
10469e7649fSLucas Segarra Fernandez  *
10569e7649fSLucas Segarra Fernandez  * Creates telemetry's debug fs folder and attributes in QAT debug fs root.
10669e7649fSLucas Segarra Fernandez  */
10769e7649fSLucas Segarra Fernandez void adf_tl_dbgfs_add(struct adf_accel_dev *accel_dev);
10869e7649fSLucas Segarra Fernandez 
10969e7649fSLucas Segarra Fernandez /**
11069e7649fSLucas Segarra Fernandez  * adf_tl_dbgfs_rm() - Remove telemetry's debug fs entries.
11169e7649fSLucas Segarra Fernandez  * @accel_dev: Pointer to acceleration device.
11269e7649fSLucas Segarra Fernandez  *
11369e7649fSLucas Segarra Fernandez  * Removes telemetry's debug fs folder and attributes from QAT debug fs root.
11469e7649fSLucas Segarra Fernandez  */
11569e7649fSLucas Segarra Fernandez void adf_tl_dbgfs_rm(struct adf_accel_dev *accel_dev);
11669e7649fSLucas Segarra Fernandez 
11769e7649fSLucas Segarra Fernandez #endif /* ADF_TL_DEBUGFS_H */
118