Lines Matching refs:fsr
106 static inline bool is_write_fault(unsigned int fsr) in is_write_fault() argument
108 return (fsr & FSR_WRITE) && !(fsr & FSR_CM); in is_write_fault()
111 static inline bool is_translation_fault(unsigned int fsr) in is_translation_fault() argument
113 int fs = fsr_fs(fsr); in is_translation_fault()
125 unsigned long addr, unsigned int fsr, in die_kernel_fault() argument
131 msg, addr, fsr & FSR_LNX_PF ? "execute" : in die_kernel_fault()
132 fsr & FSR_WRITE ? "write" : "read"); in die_kernel_fault()
135 die("Oops", regs, fsr); in die_kernel_fault()
144 __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr, in __do_kernel_fault() argument
160 if (is_translation_fault(fsr) && in __do_kernel_fault()
161 kfence_handle_page_fault(addr, is_write_fault(fsr), regs)) in __do_kernel_fault()
167 die_kernel_fault(msg, mm, addr, fsr, regs); in __do_kernel_fault()
175 __do_user_fault(unsigned long addr, unsigned int fsr, unsigned int sig, in __do_user_fault() argument
188 tsk->comm, sig, addr, fsr); in __do_user_fault()
201 tsk->thread.error_code = fsr; in __do_user_fault()
206 void do_bad_area(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_bad_area() argument
216 __do_user_fault(addr, fsr, SIGSEGV, SEGV_MAPERR, regs); in do_bad_area()
218 __do_kernel_fault(mm, addr, fsr, regs); in do_bad_area()
225 static inline bool is_permission_fault(unsigned int fsr) in is_permission_fault() argument
227 int fs = fsr_fs(fsr); in is_permission_fault()
239 do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_page_fault() argument
248 if (kprobe_page_fault(regs, fsr)) in do_page_fault()
266 if (is_write_fault(fsr)) { in do_page_fault()
271 if (fsr & FSR_LNX_PF) { in do_page_fault()
274 if (is_permission_fault(fsr) && !user_mode(regs)) in do_page_fault()
276 mm, addr, fsr, regs); in do_page_fault()
361 __do_user_fault(addr, fsr, sig, code, regs); in do_page_fault()
365 __do_kernel_fault(mm, addr, fsr, regs); in do_page_fault()
370 do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_page_fault() argument
395 do_translation_fault(unsigned long addr, unsigned int fsr, in do_translation_fault() argument
405 return do_page_fault(addr, fsr, regs); in do_translation_fault()
457 do_bad_area(addr, fsr, regs); in do_translation_fault()
462 do_translation_fault(unsigned long addr, unsigned int fsr, in do_translation_fault() argument
475 do_sect_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_sect_fault() argument
477 do_bad_area(addr, fsr, regs); in do_sect_fault()
486 do_bad(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_bad() argument
492 int (*fn)(unsigned long addr, unsigned int fsr, struct pt_regs *regs);
522 do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs) in do_DataAbort() argument
524 const struct fsr_info *inf = fsr_info + fsr_fs(fsr); in do_DataAbort()
526 if (!inf->fn(addr, fsr & ~FSR_LNX_PF, regs)) in do_DataAbort()
531 inf->name, fsr, addr); in do_DataAbort()
535 fsr, 0); in do_DataAbort()
571 static int __init early_abort_handler(unsigned long addr, unsigned int fsr, in early_abort_handler() argument
576 "firmware/bootloader bug.\n", fsr); in early_abort_handler()