Merge tag 'ras_core_for_v6.4_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 25 Apr 2023 16:56:33 +0000 (09:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 25 Apr 2023 16:56:33 +0000 (09:56 -0700)
Pull RAS updates from Borislav Petkov:

 - Just cleanups and fixes this time around: make threshold_ktype const,
   an objtool fix and use proper size for a bitmap

* tag 'ras_core_for_v6.4_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86/MCE/AMD: Use an u64 for bank_map
  x86/mce: Always inline old MCA stubs
  x86/MCE/AMD: Make kobj_type structure constant

arch/x86/kernel/cpu/mce/amd.c
arch/x86/kernel/cpu/mce/internal.h

index 23c5072..0b971f9 100644 (file)
@@ -235,10 +235,10 @@ static DEFINE_PER_CPU(struct threshold_bank **, threshold_banks);
  * A list of the banks enabled on each logical CPU. Controls which respective
  * descriptors to initialize later in mce_threshold_create_device().
  */
-static DEFINE_PER_CPU(unsigned int, bank_map);
+static DEFINE_PER_CPU(u64, bank_map);
 
 /* Map of banks that have more than MCA_MISC0 available. */
-static DEFINE_PER_CPU(u32, smca_misc_banks_map);
+static DEFINE_PER_CPU(u64, smca_misc_banks_map);
 
 static void amd_threshold_interrupt(void);
 static void amd_deferred_error_interrupt(void);
@@ -267,7 +267,7 @@ static void smca_set_misc_banks_map(unsigned int bank, unsigned int cpu)
                return;
 
        if (low & MASK_BLKPTR_LO)
-               per_cpu(smca_misc_banks_map, cpu) |= BIT(bank);
+               per_cpu(smca_misc_banks_map, cpu) |= BIT_ULL(bank);
 
 }
 
@@ -530,7 +530,7 @@ static u32 smca_get_block_address(unsigned int bank, unsigned int block,
        if (!block)
                return MSR_AMD64_SMCA_MCx_MISC(bank);
 
-       if (!(per_cpu(smca_misc_banks_map, cpu) & BIT(bank)))
+       if (!(per_cpu(smca_misc_banks_map, cpu) & BIT_ULL(bank)))
                return 0;
 
        return MSR_AMD64_SMCA_MCx_MISCy(bank, block - 1);
@@ -574,7 +574,7 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr,
        int new;
 
        if (!block)
-               per_cpu(bank_map, cpu) |= (1 << bank);
+               per_cpu(bank_map, cpu) |= BIT_ULL(bank);
 
        memset(&b, 0, sizeof(b));
        b.cpu                   = cpu;
@@ -878,7 +878,7 @@ static void amd_threshold_interrupt(void)
                return;
 
        for (bank = 0; bank < this_cpu_read(mce_num_banks); ++bank) {
-               if (!(per_cpu(bank_map, cpu) & (1 << bank)))
+               if (!(per_cpu(bank_map, cpu) & BIT_ULL(bank)))
                        continue;
 
                first_block = bp[bank]->blocks;
@@ -1029,7 +1029,7 @@ static const struct sysfs_ops threshold_ops = {
 
 static void threshold_block_release(struct kobject *kobj);
 
-static struct kobj_type threshold_ktype = {
+static const struct kobj_type threshold_ktype = {
        .sysfs_ops              = &threshold_ops,
        .default_groups         = default_groups,
        .release                = threshold_block_release,
@@ -1356,7 +1356,7 @@ int mce_threshold_create_device(unsigned int cpu)
                return -ENOMEM;
 
        for (bank = 0; bank < numbanks; ++bank) {
-               if (!(this_cpu_read(bank_map) & (1 << bank)))
+               if (!(this_cpu_read(bank_map) & BIT_ULL(bank)))
                        continue;
                err = threshold_create_bank(bp, cpu, bank);
                if (err) {
index 91a4155..d2412ce 100644 (file)
@@ -244,11 +244,11 @@ 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) {}
+static __always_inline void intel_p5_mcheck_init(struct cpuinfo_x86 *c) {}
+static __always_inline void winchip_mcheck_init(struct cpuinfo_x86 *c) {}
+static __always_inline void enable_p5_mce(void) {}
+static __always_inline void pentium_machine_check(struct pt_regs *regs) {}
+static __always_inline void winchip_machine_check(struct pt_regs *regs) {}
 #endif
 
 noinstr u64 mce_rdmsrl(u32 msr);