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

mpi3mr_debug.h (4187B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * Driver for Broadcom MPI3 Storage Controllers
      4 *
      5 * Copyright (C) 2017-2022 Broadcom Inc.
      6 *  (mailto: mpi3mr-linuxdrv.pdl@broadcom.com)
      7 *
      8 */
      9
     10#ifndef MPI3SAS_DEBUG_H_INCLUDED
     11
     12#define MPI3SAS_DEBUG_H_INCLUDED
     13
     14/*
     15 * debug levels
     16 */
     17
     18#define MPI3_DEBUG_EVENT		0x00000001
     19#define MPI3_DEBUG_EVENT_WORK_TASK	0x00000002
     20#define MPI3_DEBUG_INIT		0x00000004
     21#define MPI3_DEBUG_EXIT		0x00000008
     22#define MPI3_DEBUG_TM			0x00000010
     23#define MPI3_DEBUG_RESET		0x00000020
     24#define MPI3_DEBUG_SCSI_ERROR		0x00000040
     25#define MPI3_DEBUG_REPLY		0x00000080
     26#define MPI3_DEBUG_BSG_ERROR		0x00008000
     27#define MPI3_DEBUG_BSG_INFO		0x00010000
     28#define MPI3_DEBUG_SCSI_INFO		0x00020000
     29#define MPI3_DEBUG			0x01000000
     30#define MPI3_DEBUG_SG			0x02000000
     31
     32
     33/*
     34 * debug macros
     35 */
     36
     37#define ioc_err(ioc, fmt, ...) \
     38	pr_err("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
     39#define ioc_notice(ioc, fmt, ...) \
     40	pr_notice("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
     41#define ioc_warn(ioc, fmt, ...) \
     42	pr_warn("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
     43#define ioc_info(ioc, fmt, ...) \
     44	pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__)
     45
     46#define dprint(ioc, fmt, ...) \
     47	do { \
     48		if (ioc->logging_level & MPI3_DEBUG) \
     49			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     50	} while (0)
     51
     52#define dprint_event_th(ioc, fmt, ...) \
     53	do { \
     54		if (ioc->logging_level & MPI3_DEBUG_EVENT) \
     55			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     56	} while (0)
     57
     58#define dprint_event_bh(ioc, fmt, ...) \
     59	do { \
     60		if (ioc->logging_level & MPI3_DEBUG_EVENT_WORK_TASK) \
     61			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     62	} while (0)
     63
     64#define dprint_init(ioc, fmt, ...) \
     65	do { \
     66		if (ioc->logging_level & MPI3_DEBUG_INIT) \
     67			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     68	} while (0)
     69
     70#define dprint_exit(ioc, fmt, ...) \
     71	do { \
     72		if (ioc->logging_level & MPI3_DEBUG_EXIT) \
     73			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     74	} while (0)
     75
     76#define dprint_tm(ioc, fmt, ...) \
     77	do { \
     78		if (ioc->logging_level & MPI3_DEBUG_TM) \
     79			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     80	} while (0)
     81
     82#define dprint_reply(ioc, fmt, ...) \
     83	do { \
     84		if (ioc->logging_level & MPI3_DEBUG_REPLY) \
     85			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     86	} while (0)
     87
     88#define dprint_reset(ioc, fmt, ...) \
     89	do { \
     90		if (ioc->logging_level & MPI3_DEBUG_RESET) \
     91			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     92	} while (0)
     93
     94#define dprint_scsi_info(ioc, fmt, ...) \
     95	do { \
     96		if (ioc->logging_level & MPI3_DEBUG_SCSI_INFO) \
     97			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
     98	} while (0)
     99
    100#define dprint_scsi_err(ioc, fmt, ...) \
    101	do { \
    102		if (ioc->logging_level & MPI3_DEBUG_SCSI_ERROR) \
    103			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
    104	} while (0)
    105
    106#define dprint_scsi_command(ioc, SCMD, LOG_LEVEL) \
    107	do { \
    108		if (ioc->logging_level & LOG_LEVEL) \
    109			scsi_print_command(SCMD); \
    110	} while (0)
    111
    112
    113#define dprint_bsg_info(ioc, fmt, ...) \
    114	do { \
    115		if (ioc->logging_level & MPI3_DEBUG_BSG_INFO) \
    116			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
    117	} while (0)
    118
    119#define dprint_bsg_err(ioc, fmt, ...) \
    120	do { \
    121		if (ioc->logging_level & MPI3_DEBUG_BSG_ERROR) \
    122			pr_info("%s: " fmt, (ioc)->name, ##__VA_ARGS__); \
    123	} while (0)
    124
    125#endif /* MPT3SAS_DEBUG_H_INCLUDED */
    126
    127/**
    128 * dprint_dump - print contents of a memory buffer
    129 * @req: Pointer to a memory buffer
    130 * @sz: Memory buffer size
    131 * @namestr: Name String to identify the buffer type
    132 */
    133static inline void
    134dprint_dump(void *req, int sz, const char *name_string)
    135{
    136	int i;
    137	__le32 *mfp = (__le32 *)req;
    138
    139	sz = sz/4;
    140	if (name_string)
    141		pr_info("%s:\n\t", name_string);
    142	else
    143		pr_info("request:\n\t");
    144	for (i = 0; i < sz; i++) {
    145		if (i && ((i % 8) == 0))
    146			pr_info("\n\t");
    147		pr_info("%08x ", le32_to_cpu(mfp[i]));
    148	}
    149	pr_info("\n");
    150}
    151
    152/**
    153 * dprint_dump_req - print message frame contents
    154 * @req: pointer to message frame
    155 * @sz: number of dwords
    156 */
    157static inline void
    158dprint_dump_req(void *req, int sz)
    159{
    160	int i;
    161	__le32 *mfp = (__le32 *)req;
    162
    163	pr_info("request:\n\t");
    164	for (i = 0; i < sz; i++) {
    165		if (i && ((i % 8) == 0))
    166			pr_info("\n\t");
    167		pr_info("%08x ", le32_to_cpu(mfp[i]));
    168	}
    169	pr_info("\n");
    170}