linux/drivers/infiniband/hw/hfi1/fault.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
   2/*
   3 * Copyright(c) 2018 Intel Corporation.
   4 */
   5
   6#ifndef _HFI1_FAULT_H
   7#define _HFI1_FAULT_H
   8
   9#include <linux/fault-inject.h>
  10#include <linux/dcache.h>
  11#include <linux/bitops.h>
  12#include <linux/kernel.h>
  13#include <rdma/rdma_vt.h>
  14
  15#include "hfi.h"
  16
  17struct hfi1_ibdev;
  18
  19#if defined(CONFIG_FAULT_INJECTION) && defined(CONFIG_FAULT_INJECTION_DEBUG_FS)
  20struct fault {
  21        struct fault_attr attr;
  22        struct dentry *dir;
  23        u64 n_rxfaults[(1U << BITS_PER_BYTE)];
  24        u64 n_txfaults[(1U << BITS_PER_BYTE)];
  25        u64 fault_skip;
  26        u64 skip;
  27        u64 fault_skip_usec;
  28        unsigned long skip_usec;
  29        unsigned long opcodes[(1U << BITS_PER_BYTE) / BITS_PER_LONG];
  30        bool enable;
  31        bool suppress_err;
  32        bool opcode;
  33        u8 direction;
  34};
  35
  36int hfi1_fault_init_debugfs(struct hfi1_ibdev *ibd);
  37bool hfi1_dbg_should_fault_tx(struct rvt_qp *qp, u32 opcode);
  38bool hfi1_dbg_should_fault_rx(struct hfi1_packet *packet);
  39bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd);
  40void hfi1_fault_exit_debugfs(struct hfi1_ibdev *ibd);
  41
  42#else
  43
  44static inline int hfi1_fault_init_debugfs(struct hfi1_ibdev *ibd)
  45{
  46        return 0;
  47}
  48
  49static inline bool hfi1_dbg_should_fault_rx(struct hfi1_packet *packet)
  50{
  51        return false;
  52}
  53
  54static inline bool hfi1_dbg_should_fault_tx(struct rvt_qp *qp,
  55                                            u32 opcode)
  56{
  57        return false;
  58}
  59
  60static inline bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd)
  61{
  62        return false;
  63}
  64
  65static inline void hfi1_fault_exit_debugfs(struct hfi1_ibdev *ibd)
  66{
  67}
  68#endif
  69#endif /* _HFI1_FAULT_H */
  70