1 #ifndef _HFI1_DEBUGFS_H 2 #define _HFI1_DEBUGFS_H 3 /* 4 * Copyright(c) 2015, 2016 Intel Corporation. 5 * 6 * This file is provided under a dual BSD/GPLv2 license. When using or 7 * redistributing this file, you may do so under either license. 8 * 9 * GPL LICENSE SUMMARY 10 * 11 * This program is free software; you can redistribute it and/or modify 12 * it under the terms of version 2 of the GNU General Public License as 13 * published by the Free Software Foundation. 14 * 15 * This program is distributed in the hope that it will be useful, but 16 * WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 18 * General Public License for more details. 19 * 20 * BSD LICENSE 21 * 22 * Redistribution and use in source and binary forms, with or without 23 * modification, are permitted provided that the following conditions 24 * are met: 25 * 26 * - Redistributions of source code must retain the above copyright 27 * notice, this list of conditions and the following disclaimer. 28 * - Redistributions in binary form must reproduce the above copyright 29 * notice, this list of conditions and the following disclaimer in 30 * the documentation and/or other materials provided with the 31 * distribution. 32 * - Neither the name of Intel Corporation nor the names of its 33 * contributors may be used to endorse or promote products derived 34 * from this software without specific prior written permission. 35 * 36 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 37 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 38 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 39 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 40 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 41 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 42 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 43 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 44 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 45 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 46 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 47 * 48 */ 49 50 struct hfi1_ibdev; 51 #ifdef CONFIG_DEBUG_FS 52 void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd); 53 void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd); 54 void hfi1_dbg_init(void); 55 void hfi1_dbg_exit(void); 56 57 #ifdef CONFIG_FAULT_INJECTION 58 #include <linux/fault-inject.h> 59 struct fault_opcode { 60 struct fault_attr attr; 61 struct dentry *dir; 62 bool fault_by_opcode; 63 u64 n_rxfaults[256]; 64 u64 n_txfaults[256]; 65 u8 opcode; 66 u8 mask; 67 }; 68 69 struct fault_packet { 70 struct fault_attr attr; 71 struct dentry *dir; 72 bool fault_by_packet; 73 u64 n_faults; 74 }; 75 76 bool hfi1_dbg_fault_opcode(struct rvt_qp *qp, u32 opcode, bool rx); 77 bool hfi1_dbg_fault_packet(struct hfi1_packet *packet); 78 bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd); 79 #else 80 static inline bool hfi1_dbg_fault_packet(struct hfi1_packet *packet) 81 { 82 return false; 83 } 84 85 static inline bool hfi1_dbg_fault_opcode(struct rvt_qp *qp, 86 u32 opcode, bool rx) 87 { 88 return false; 89 } 90 91 static inline bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd) 92 { 93 return false; 94 } 95 #endif 96 97 #else 98 static inline void hfi1_dbg_ibdev_init(struct hfi1_ibdev *ibd) 99 { 100 } 101 102 static inline void hfi1_dbg_ibdev_exit(struct hfi1_ibdev *ibd) 103 { 104 } 105 106 static inline void hfi1_dbg_init(void) 107 { 108 } 109 110 static inline void hfi1_dbg_exit(void) 111 { 112 } 113 114 static inline bool hfi1_dbg_fault_packet(struct hfi1_packet *packet) 115 { 116 return false; 117 } 118 119 static inline bool hfi1_dbg_fault_opcode(struct rvt_qp *qp, 120 u32 opcode, bool rx) 121 { 122 return false; 123 } 124 125 static inline bool hfi1_dbg_fault_suppress_err(struct hfi1_ibdev *ibd) 126 { 127 return false; 128 } 129 #endif 130 131 #endif /* _HFI1_DEBUGFS_H */ 132