xref: /openbmc/linux/drivers/scsi/mpi3mr/mpi3mr_debug.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1824a1566SKashyap Desai /* SPDX-License-Identifier: GPL-2.0-or-later */
2824a1566SKashyap Desai /*
3824a1566SKashyap Desai  * Driver for Broadcom MPI3 Storage Controllers
4824a1566SKashyap Desai  *
5*e74f2fbdSRanjan Kumar  * Copyright (C) 2017-2023 Broadcom Inc.
6824a1566SKashyap Desai  *  (mailto: mpi3mr-linuxdrv.pdl@broadcom.com)
7824a1566SKashyap Desai  *
8824a1566SKashyap Desai  */
9824a1566SKashyap Desai 
10824a1566SKashyap Desai #ifndef MPI3SAS_DEBUG_H_INCLUDED
11824a1566SKashyap Desai 
12824a1566SKashyap Desai #define MPI3SAS_DEBUG_H_INCLUDED
13824a1566SKashyap Desai 
14824a1566SKashyap Desai /*
15824a1566SKashyap Desai  * debug levels
16824a1566SKashyap Desai  */
179cf0666fSSreekanth Reddy 
189cf0666fSSreekanth Reddy #define MPI3_DEBUG_EVENT		0x00000001
199cf0666fSSreekanth Reddy #define MPI3_DEBUG_EVENT_WORK_TASK	0x00000002
209cf0666fSSreekanth Reddy #define MPI3_DEBUG_INIT		0x00000004
219cf0666fSSreekanth Reddy #define MPI3_DEBUG_EXIT		0x00000008
229cf0666fSSreekanth Reddy #define MPI3_DEBUG_TM			0x00000010
239cf0666fSSreekanth Reddy #define MPI3_DEBUG_RESET		0x00000020
249cf0666fSSreekanth Reddy #define MPI3_DEBUG_SCSI_ERROR		0x00000040
259cf0666fSSreekanth Reddy #define MPI3_DEBUG_REPLY		0x00000080
263b73c45eSSreekanth Reddy #define MPI3_DEBUG_CFG_ERROR		0x00000100
273b73c45eSSreekanth Reddy #define MPI3_DEBUG_TRANSPORT_ERROR	0x00000200
28f5e6d5a3SSumit Saxena #define MPI3_DEBUG_BSG_ERROR		0x00008000
29f5e6d5a3SSumit Saxena #define MPI3_DEBUG_BSG_INFO		0x00010000
309cf0666fSSreekanth Reddy #define MPI3_DEBUG_SCSI_INFO		0x00020000
313b73c45eSSreekanth Reddy #define MPI3_DEBUG_CFG_INFO		0x00040000
323b73c45eSSreekanth Reddy #define MPI3_DEBUG_TRANSPORT_INFO	0x00080000
339cf0666fSSreekanth Reddy #define MPI3_DEBUG			0x01000000
349cf0666fSSreekanth Reddy #define MPI3_DEBUG_SG			0x02000000
35824a1566SKashyap Desai 
36824a1566SKashyap Desai 
37824a1566SKashyap Desai /*
38824a1566SKashyap Desai  * debug macros
39824a1566SKashyap Desai  */
40824a1566SKashyap Desai 
41824a1566SKashyap Desai #define ioc_err(ioc, fmt, ...) \
42824a1566SKashyap Desai 	pr_err("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
43824a1566SKashyap Desai #define ioc_notice(ioc, fmt, ...) \
44824a1566SKashyap Desai 	pr_notice("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
45824a1566SKashyap Desai #define ioc_warn(ioc, fmt, ...) \
46824a1566SKashyap Desai 	pr_warn("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
47824a1566SKashyap Desai #define ioc_info(ioc, fmt, ...) \
48824a1566SKashyap Desai 	pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
49824a1566SKashyap Desai 
509cf0666fSSreekanth Reddy #define dprint(ioc, fmt, ...) \
51824a1566SKashyap Desai 	do { \
529cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG) \
539cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
549cf0666fSSreekanth Reddy 	} while (0)
559cf0666fSSreekanth Reddy 
569cf0666fSSreekanth Reddy #define dprint_event_th(ioc, fmt, ...) \
579cf0666fSSreekanth Reddy 	do { \
589cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_EVENT) \
599cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
609cf0666fSSreekanth Reddy 	} while (0)
619cf0666fSSreekanth Reddy 
629cf0666fSSreekanth Reddy #define dprint_event_bh(ioc, fmt, ...) \
639cf0666fSSreekanth Reddy 	do { \
649cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_EVENT_WORK_TASK) \
659cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
669cf0666fSSreekanth Reddy 	} while (0)
679cf0666fSSreekanth Reddy 
689cf0666fSSreekanth Reddy #define dprint_init(ioc, fmt, ...) \
699cf0666fSSreekanth Reddy 	do { \
709cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_INIT) \
719cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
729cf0666fSSreekanth Reddy 	} while (0)
739cf0666fSSreekanth Reddy 
749cf0666fSSreekanth Reddy #define dprint_exit(ioc, fmt, ...) \
759cf0666fSSreekanth Reddy 	do { \
769cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_EXIT) \
779cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
789cf0666fSSreekanth Reddy 	} while (0)
799cf0666fSSreekanth Reddy 
809cf0666fSSreekanth Reddy #define dprint_tm(ioc, fmt, ...) \
819cf0666fSSreekanth Reddy 	do { \
829cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_TM) \
839cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
849cf0666fSSreekanth Reddy 	} while (0)
859cf0666fSSreekanth Reddy 
869cf0666fSSreekanth Reddy #define dprint_reply(ioc, fmt, ...) \
879cf0666fSSreekanth Reddy 	do { \
889cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_REPLY) \
899cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
909cf0666fSSreekanth Reddy 	} while (0)
919cf0666fSSreekanth Reddy 
929cf0666fSSreekanth Reddy #define dprint_reset(ioc, fmt, ...) \
939cf0666fSSreekanth Reddy 	do { \
949cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_RESET) \
959cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
969cf0666fSSreekanth Reddy 	} while (0)
979cf0666fSSreekanth Reddy 
989cf0666fSSreekanth Reddy #define dprint_scsi_info(ioc, fmt, ...) \
999cf0666fSSreekanth Reddy 	do { \
1009cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_SCSI_INFO) \
1019cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1029cf0666fSSreekanth Reddy 	} while (0)
1039cf0666fSSreekanth Reddy 
1049cf0666fSSreekanth Reddy #define dprint_scsi_err(ioc, fmt, ...) \
1059cf0666fSSreekanth Reddy 	do { \
1069cf0666fSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_SCSI_ERROR) \
1079cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1089cf0666fSSreekanth Reddy 	} while (0)
1099cf0666fSSreekanth Reddy 
1109cf0666fSSreekanth Reddy #define dprint_scsi_command(ioc, SCMD, LOG_LEVEL) \
1119cf0666fSSreekanth Reddy 	do { \
1129cf0666fSSreekanth Reddy 		if (ioc->logging_level & LOG_LEVEL) \
1139cf0666fSSreekanth Reddy 			scsi_print_command(SCMD); \
1149cf0666fSSreekanth Reddy 	} while (0)
1159cf0666fSSreekanth Reddy 
1169cf0666fSSreekanth Reddy 
117f5e6d5a3SSumit Saxena #define dprint_bsg_info(ioc, fmt, ...) \
1189cf0666fSSreekanth Reddy 	do { \
119f5e6d5a3SSumit Saxena 		if (ioc->logging_level & MPI3_DEBUG_BSG_INFO) \
1209cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1219cf0666fSSreekanth Reddy 	} while (0)
1229cf0666fSSreekanth Reddy 
123f5e6d5a3SSumit Saxena #define dprint_bsg_err(ioc, fmt, ...) \
1249cf0666fSSreekanth Reddy 	do { \
125f5e6d5a3SSumit Saxena 		if (ioc->logging_level & MPI3_DEBUG_BSG_ERROR) \
1269cf0666fSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
127824a1566SKashyap Desai 	} while (0)
128824a1566SKashyap Desai 
1293b73c45eSSreekanth Reddy #define dprint_cfg_info(ioc, fmt, ...) \
1303b73c45eSSreekanth Reddy 	do { \
1313b73c45eSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_CFG_INFO) \
1323b73c45eSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1333b73c45eSSreekanth Reddy 	} while (0)
1343b73c45eSSreekanth Reddy 
1353b73c45eSSreekanth Reddy #define dprint_cfg_err(ioc, fmt, ...) \
1363b73c45eSSreekanth Reddy 	do { \
1373b73c45eSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_CFG_ERROR) \
1383b73c45eSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1393b73c45eSSreekanth Reddy 	} while (0)
1403b73c45eSSreekanth Reddy #define dprint_transport_info(ioc, fmt, ...) \
1413b73c45eSSreekanth Reddy 	do { \
1423b73c45eSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_TRANSPORT_INFO) \
1433b73c45eSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1443b73c45eSSreekanth Reddy 	} while (0)
1453b73c45eSSreekanth Reddy 
1463b73c45eSSreekanth Reddy #define dprint_transport_err(ioc, fmt, ...) \
1473b73c45eSSreekanth Reddy 	do { \
1483b73c45eSSreekanth Reddy 		if (ioc->logging_level & MPI3_DEBUG_TRANSPORT_ERROR) \
1493b73c45eSSreekanth Reddy 			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
1503b73c45eSSreekanth Reddy 	} while (0)
1513b73c45eSSreekanth Reddy 
152824a1566SKashyap Desai #endif /* MPT3SAS_DEBUG_H_INCLUDED */
1539cf0666fSSreekanth Reddy 
1549cf0666fSSreekanth Reddy /**
155506bc1a0SSumit Saxena  * dprint_dump - print contents of a memory buffer
156506bc1a0SSumit Saxena  * @req: Pointer to a memory buffer
157506bc1a0SSumit Saxena  * @sz: Memory buffer size
158506bc1a0SSumit Saxena  * @namestr: Name String to identify the buffer type
159506bc1a0SSumit Saxena  */
160506bc1a0SSumit Saxena static inline void
dprint_dump(void * req,int sz,const char * name_string)161506bc1a0SSumit Saxena dprint_dump(void *req, int sz, const char *name_string)
162506bc1a0SSumit Saxena {
163506bc1a0SSumit Saxena 	int i;
164506bc1a0SSumit Saxena 	__le32 *mfp = (__le32 *)req;
165506bc1a0SSumit Saxena 
166506bc1a0SSumit Saxena 	sz = sz/4;
167506bc1a0SSumit Saxena 	if (name_string)
168506bc1a0SSumit Saxena 		pr_info("%s:\n\t", name_string);
169506bc1a0SSumit Saxena 	else
170506bc1a0SSumit Saxena 		pr_info("request:\n\t");
171506bc1a0SSumit Saxena 	for (i = 0; i < sz; i++) {
172506bc1a0SSumit Saxena 		if (i && ((i % 8) == 0))
173506bc1a0SSumit Saxena 			pr_info("\n\t");
174506bc1a0SSumit Saxena 		pr_info("%08x ", le32_to_cpu(mfp[i]));
175506bc1a0SSumit Saxena 	}
176506bc1a0SSumit Saxena 	pr_info("\n");
177506bc1a0SSumit Saxena }
178506bc1a0SSumit Saxena 
179506bc1a0SSumit Saxena /**
1809cf0666fSSreekanth Reddy  * dprint_dump_req - print message frame contents
1819cf0666fSSreekanth Reddy  * @req: pointer to message frame
1829cf0666fSSreekanth Reddy  * @sz: number of dwords
1839cf0666fSSreekanth Reddy  */
1849cf0666fSSreekanth Reddy static inline void
dprint_dump_req(void * req,int sz)1859cf0666fSSreekanth Reddy dprint_dump_req(void *req, int sz)
1869cf0666fSSreekanth Reddy {
1879cf0666fSSreekanth Reddy 	int i;
1889cf0666fSSreekanth Reddy 	__le32 *mfp = (__le32 *)req;
1899cf0666fSSreekanth Reddy 
1909cf0666fSSreekanth Reddy 	pr_info("request:\n\t");
1919cf0666fSSreekanth Reddy 	for (i = 0; i < sz; i++) {
1929cf0666fSSreekanth Reddy 		if (i && ((i % 8) == 0))
1939cf0666fSSreekanth Reddy 			pr_info("\n\t");
1949cf0666fSSreekanth Reddy 		pr_info("%08x ", le32_to_cpu(mfp[i]));
1959cf0666fSSreekanth Reddy 	}
1969cf0666fSSreekanth Reddy 	pr_info("\n");
1979cf0666fSSreekanth Reddy }
198