Merge tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Nov 2021 22:12:04 +0000 (15:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Nov 2021 22:12:04 +0000 (15:12 -0700)
Pull RAS updates from Borislav Petkov:

 - Get rid of a bunch of function pointers used in MCA land in favor of
   normal functions. This is in preparation of making the MCA code
   noinstr-aware

 - When the kernel copies data from user addresses and it encounters a
   machine check, a SIGBUS is sent to that process. Change this action
   to either an -EFAULT which is returned to the user or a short write,
   making the recovery action a lot more user-friendly

* tag 'ras_core_for_v5.16_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/mce: Sort mca_config members to get rid of unnecessary padding
  x86/mce: Get rid of the ->quirk_no_way_out() indirect call
  x86/mce: Get rid of msr_ops
  x86/mce: Get rid of machine_check_vector
  x86/mce: Get rid of the mce_severity function pointer
  x86/mce: Drop copyin special case for #MC
  x86/mce: Change to not send SIGBUS error during copy from user

1  2 
arch/x86/kernel/cpu/mce/core.c
arch/x86/kernel/cpu/mce/internal.h
arch/x86/kernel/cpu/mce/severity.c

Simple merge
@@@ -183,7 -190,31 +190,21 @@@ extern bool filter_mce(struct mce *m)
  #ifdef CONFIG_X86_MCE_AMD
  extern bool amd_filter_mce(struct mce *m);
  #else
 -static inline bool amd_filter_mce(struct mce *m)                      { return false; };
 +static inline bool amd_filter_mce(struct mce *m) { return false; }
  #endif
  
 -__visible bool ex_handler_rdmsr_fault(const struct exception_table_entry *fixup,
 -                                    struct pt_regs *regs, int trapnr,
 -                                    unsigned long error_code,
 -                                    unsigned long fault_addr);
 -
 -__visible bool ex_handler_wrmsr_fault(const struct exception_table_entry *fixup,
 -                                    struct pt_regs *regs, int trapnr,
 -                                    unsigned long error_code,
 -                                    unsigned long fault_addr);
 -
+ #ifdef CONFIG_X86_ANCIENT_MCE
+ void intel_p5_mcheck_init(struct cpuinfo_x86 *c);
+ void winchip_mcheck_init(struct cpuinfo_x86 *c);
+ noinstr void pentium_machine_check(struct pt_regs *regs);
+ noinstr void winchip_machine_check(struct pt_regs *regs);
+ static inline void enable_p5_mce(void) { mce_p5_enabled = 1; }
+ #else
+ static inline void intel_p5_mcheck_init(struct cpuinfo_x86 *c) {}
+ static inline void winchip_mcheck_init(struct cpuinfo_x86 *c) {}
+ static inline void enable_p5_mce(void) {}
+ static inline void pentium_machine_check(struct pt_regs *regs) {}
+ static inline void winchip_machine_check(struct pt_regs *regs) {}
+ #endif
  #endif /* __X86_MCE_INTERNAL_H__ */
Simple merge