cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mptdebug.h (7200B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *  linux/drivers/message/fusion/mptdebug.h
      4 *      For use with LSI PCI chip/adapter(s)
      5 *      running LSI Fusion MPT (Message Passing Technology) firmware.
      6 *
      7 *  Copyright (c) 1999-2008 LSI Corporation
      8 *  (mailto:DL-MPTFusionLinux@lsi.com)
      9 *
     10 */
     11/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
     12
     13#ifndef MPTDEBUG_H_INCLUDED
     14#define MPTDEBUG_H_INCLUDED
     15
     16/*
     17 * debug level can be programmed on the fly via SysFS (hex values)
     18 *
     19 * Example:  (programming for MPT_DEBUG_EVENTS on host 5)
     20 *
     21 * echo 8 > /sys/class/scsi_host/host5/debug_level
     22 *
     23 * --------------------------------------------------------
     24 * mpt_debug_level - command line parameter
     25 * this allow enabling debug at driver load time (for all iocs)
     26 *
     27 * Example  (programming for MPT_DEBUG_EVENTS)
     28 *
     29 * insmod mptbase.ko mpt_debug_level=8
     30 *
     31 * --------------------------------------------------------
     32 * CONFIG_FUSION_LOGGING - enables compiling debug into driver
     33 * this can be enabled in the driver Makefile
     34 *
     35 *
     36 * --------------------------------------------------------
     37 * Please note most debug prints are set to logging priority = debug
     38 * This is the lowest level, and most verbose.  Please refer to manual
     39 * pages for syslogd or syslogd-ng on how to configure this.
     40 */
     41
     42#define MPT_DEBUG			0x00000001
     43#define MPT_DEBUG_MSG_FRAME		0x00000002
     44#define MPT_DEBUG_SG			0x00000004
     45#define MPT_DEBUG_EVENTS		0x00000008
     46#define MPT_DEBUG_VERBOSE_EVENTS	0x00000010
     47#define MPT_DEBUG_INIT			0x00000020
     48#define MPT_DEBUG_EXIT			0x00000040
     49#define MPT_DEBUG_FAIL			0x00000080
     50#define MPT_DEBUG_TM			0x00000100
     51#define MPT_DEBUG_DV			0x00000200
     52#define MPT_DEBUG_REPLY			0x00000400
     53#define MPT_DEBUG_HANDSHAKE		0x00000800
     54#define MPT_DEBUG_CONFIG		0x00001000
     55#define MPT_DEBUG_DL			0x00002000
     56#define MPT_DEBUG_RESET			0x00008000
     57#define MPT_DEBUG_SCSI			0x00010000
     58#define MPT_DEBUG_IOCTL			0x00020000
     59#define MPT_DEBUG_FC			0x00080000
     60#define MPT_DEBUG_SAS			0x00100000
     61#define MPT_DEBUG_SAS_WIDE		0x00200000
     62#define MPT_DEBUG_36GB_MEM              0x00400000
     63
     64/*
     65 * CONFIG_FUSION_LOGGING - enabled in Kconfig
     66 */
     67
     68#ifdef CONFIG_FUSION_LOGGING
     69#define MPT_CHECK_LOGGING(IOC, CMD, BITS)			\
     70do {								\
     71	if (IOC->debug_level & BITS)				\
     72		CMD;						\
     73} while (0)
     74#else
     75#define MPT_CHECK_LOGGING(IOC, CMD, BITS)			\
     76do { } while (0)
     77#endif
     78
     79
     80/*
     81 * debug macros
     82 */
     83
     84#define dprintk(IOC, CMD)			\
     85	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG)
     86
     87#define dsgprintk(IOC, CMD)			\
     88	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SG)
     89
     90#define devtprintk(IOC, CMD)			\
     91	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_EVENTS)
     92
     93#define devtverboseprintk(IOC, CMD)		\
     94	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_VERBOSE_EVENTS)
     95
     96#define dinitprintk(IOC, CMD)			\
     97	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_INIT)
     98
     99#define dexitprintk(IOC, CMD)			\
    100	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_EXIT)
    101
    102#define dfailprintk(IOC, CMD)			\
    103	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_FAIL)
    104
    105#define dtmprintk(IOC, CMD)			\
    106	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_TM)
    107
    108#define ddvprintk(IOC, CMD)			\
    109	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_DV)
    110
    111#define dreplyprintk(IOC, CMD)			\
    112	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_REPLY)
    113
    114#define dhsprintk(IOC, CMD)			\
    115	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_HANDSHAKE)
    116
    117#define dcprintk(IOC, CMD)			\
    118	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_CONFIG)
    119
    120#define ddlprintk(IOC, CMD)			\
    121	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_DL)
    122
    123#define drsprintk(IOC, CMD)			\
    124	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_RESET)
    125
    126#define dsprintk(IOC, CMD)			\
    127	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SCSI)
    128
    129#define dctlprintk(IOC, CMD)			\
    130	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_IOCTL)
    131
    132#define dfcprintk(IOC, CMD)			\
    133	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_FC)
    134
    135#define dsasprintk(IOC, CMD)			\
    136	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SAS)
    137
    138#define dsaswideprintk(IOC, CMD)		\
    139	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_SAS_WIDE)
    140
    141#define d36memprintk(IOC, CMD)		\
    142	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_36GB_MEM)
    143
    144
    145/*
    146 * Verbose logging
    147 */
    148#if defined(MPT_DEBUG_VERBOSE) && defined(CONFIG_FUSION_LOGGING)
    149static inline void
    150DBG_DUMP_FW_DOWNLOAD(MPT_ADAPTER *ioc, u32  *mfp, int numfrags)
    151{
    152	int i;
    153
    154	if (!(ioc->debug_level & MPT_DEBUG))
    155		return;
    156	printk(KERN_DEBUG "F/W download request:\n");
    157	for (i=0; i < 7+numfrags*2; i++)
    158		printk(" %08x", le32_to_cpu(mfp[i]));
    159	printk("\n");
    160}
    161
    162static inline void
    163DBG_DUMP_PUT_MSG_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    164{
    165	int	 ii, n;
    166
    167	if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
    168		return;
    169	printk(KERN_DEBUG "%s: About to Put msg frame @ %p:\n",
    170		ioc->name, mfp);
    171	n = ioc->req_sz/4 - 1;
    172	while (mfp[n] == 0)
    173		n--;
    174	for (ii=0; ii<=n; ii++) {
    175		if (ii && ((ii%8)==0))
    176			printk("\n");
    177		printk(" %08x", le32_to_cpu(mfp[ii]));
    178	}
    179	printk("\n");
    180}
    181
    182static inline void
    183DBG_DUMP_FW_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    184{
    185	int  i, n;
    186
    187	if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
    188		return;
    189	n = 10;
    190	printk(KERN_INFO " ");
    191	for (i = 0; i < n; i++)
    192		printk(" %08x", le32_to_cpu(mfp[i]));
    193	printk("\n");
    194}
    195
    196static inline void
    197DBG_DUMP_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    198{
    199	int  i, n;
    200
    201	if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
    202		return;
    203	n = 24;
    204	for (i=0; i<n; i++) {
    205		if (i && ((i%8)==0))
    206			printk("\n");
    207		printk("%08x ", le32_to_cpu(mfp[i]));
    208	}
    209	printk("\n");
    210}
    211
    212static inline void
    213DBG_DUMP_REPLY_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    214{
    215	int  i, n;
    216
    217	if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
    218		return;
    219	n = (le32_to_cpu(mfp[0]) & 0x00FF0000) >> 16;
    220	printk(KERN_INFO " ");
    221	for (i=0; i<n; i++)
    222		printk(" %08x", le32_to_cpu(mfp[i]));
    223	printk("\n");
    224}
    225
    226static inline void
    227DBG_DUMP_REQUEST_FRAME_HDR(MPT_ADAPTER *ioc, u32 *mfp)
    228{
    229	int  i, n;
    230
    231	if (!(ioc->debug_level & MPT_DEBUG_MSG_FRAME))
    232		return;
    233	n = 3;
    234	printk(KERN_INFO " ");
    235	for (i=0; i<n; i++)
    236		printk(" %08x", le32_to_cpu(mfp[i]));
    237	printk("\n");
    238}
    239
    240static inline void
    241DBG_DUMP_TM_REQUEST_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    242{
    243	int  i, n;
    244
    245	if (!(ioc->debug_level & MPT_DEBUG_TM))
    246		return;
    247	n = 13;
    248	printk(KERN_DEBUG "TM_REQUEST:\n");
    249	for (i=0; i<n; i++) {
    250		if (i && ((i%8)==0))
    251			printk("\n");
    252		printk("%08x ", le32_to_cpu(mfp[i]));
    253	}
    254	printk("\n");
    255}
    256
    257static inline void
    258DBG_DUMP_TM_REPLY_FRAME(MPT_ADAPTER *ioc, u32 *mfp)
    259{
    260	int  i, n;
    261
    262	if (!(ioc->debug_level & MPT_DEBUG_TM))
    263		return;
    264	n = (le32_to_cpu(mfp[0]) & 0x00FF0000) >> 16;
    265	printk(KERN_DEBUG "TM_REPLY MessageLength=%d:\n", n);
    266	for (i=0; i<n; i++) {
    267		if (i && ((i%8)==0))
    268			printk("\n");
    269		printk(" %08x", le32_to_cpu(mfp[i]));
    270	}
    271	printk("\n");
    272}
    273
    274#define dmfprintk(IOC, CMD)			\
    275	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_MSG_FRAME)
    276
    277# else /* ifdef MPT_DEBUG_MF */
    278
    279#define DBG_DUMP_FW_DOWNLOAD(IOC, mfp, numfrags)
    280#define DBG_DUMP_PUT_MSG_FRAME(IOC, mfp)
    281#define DBG_DUMP_FW_REQUEST_FRAME(IOC, mfp)
    282#define DBG_DUMP_REQUEST_FRAME(IOC, mfp)
    283#define DBG_DUMP_REPLY_FRAME(IOC, mfp)
    284#define DBG_DUMP_REQUEST_FRAME_HDR(IOC, mfp)
    285#define DBG_DUMP_TM_REQUEST_FRAME(IOC, mfp)
    286#define DBG_DUMP_TM_REPLY_FRAME(IOC, mfp)
    287
    288#define dmfprintk(IOC, CMD)			\
    289	MPT_CHECK_LOGGING(IOC, CMD, MPT_DEBUG_MSG_FRAME)
    290
    291#endif /* defined(MPT_DEBUG_VERBOSE) && defined(CONFIG_FUSION_LOGGING) */
    292
    293#endif /* ifndef MPTDEBUG_H_INCLUDED */