Lines Matching refs:fault

13 #include "fault.h"
69 if (!ibd->fault->n_rxfaults[i] && !ibd->fault->n_txfaults[i])
74 (unsigned long long)ibd->fault->n_rxfaults[i],
75 (unsigned long long)ibd->fault->n_txfaults[i]);
96 struct fault *fault = file->private_data;
138 bitmap_zero(fault->opcodes, sizeof(fault->opcodes) *
148 clear_bit(i, fault->opcodes);
150 set_bit(i, fault->opcodes);
170 struct fault *fault = file->private_data;
171 size_t bitsize = sizeof(fault->opcodes) * BITS_PER_BYTE;
179 bit = find_first_bit(fault->opcodes, bitsize);
181 zero = find_next_zero_bit(fault->opcodes, bitsize, bit);
190 bit = find_next_bit(fault->opcodes, bitsize, zero);
211 if (ibd->fault)
212 debugfs_remove_recursive(ibd->fault->dir);
213 kfree(ibd->fault);
214 ibd->fault = NULL;
222 ibd->fault = kzalloc(sizeof(*ibd->fault), GFP_KERNEL);
223 if (!ibd->fault)
226 ibd->fault->attr.interval = 1;
227 ibd->fault->attr.require_end = ULONG_MAX;
228 ibd->fault->attr.stacktrace_depth = 32;
229 ibd->fault->attr.dname = NULL;
230 ibd->fault->attr.verbose = 0;
231 ibd->fault->enable = false;
232 ibd->fault->opcode = false;
233 ibd->fault->fault_skip = 0;
234 ibd->fault->skip = 0;
235 ibd->fault->direction = HFI1_FAULT_DIR_TXRX;
236 ibd->fault->suppress_err = false;
237 bitmap_zero(ibd->fault->opcodes,
238 sizeof(ibd->fault->opcodes) * BITS_PER_BYTE);
241 fault_create_debugfs_attr("fault", parent, &ibd->fault->attr);
243 kfree(ibd->fault);
244 ibd->fault = NULL;
247 ibd->fault->dir = fault_dir;
251 debugfs_create_bool("enable", 0600, fault_dir, &ibd->fault->enable);
253 &ibd->fault->suppress_err);
255 &ibd->fault->opcode);
256 debugfs_create_file("opcodes", 0600, fault_dir, ibd->fault,
259 &ibd->fault->fault_skip);
261 &ibd->fault->fault_skip_usec);
262 debugfs_create_u8("direction", 0600, fault_dir, &ibd->fault->direction);
269 if (ibd->fault)
270 return ibd->fault->suppress_err;
279 if (!ibd->fault || !ibd->fault->enable)
281 if (!(ibd->fault->direction & direction))
283 if (ibd->fault->opcode) {
284 if (bitmap_empty(ibd->fault->opcodes,
285 (sizeof(ibd->fault->opcodes) *
288 if (!(test_bit(opcode, ibd->fault->opcodes)))
291 if (ibd->fault->fault_skip_usec &&
292 time_before(jiffies, ibd->fault->skip_usec))
294 if (ibd->fault->fault_skip && ibd->fault->skip) {
295 ibd->fault->skip--;
298 ret = should_fail(&ibd->fault->attr, 1);
300 ibd->fault->skip = ibd->fault->fault_skip;
301 ibd->fault->skip_usec = jiffies +
302 usecs_to_jiffies(ibd->fault->fault_skip_usec);
313 ibd->fault->n_txfaults[opcode]++;
325 ibd->fault->n_rxfaults[packet->opcode]++;