Commit d3464152 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'ras_core_for_v6.4_rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

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
parents e94ee641 4c1cdec3
...@@ -235,10 +235,10 @@ static DEFINE_PER_CPU(struct threshold_bank **, threshold_banks); ...@@ -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 * A list of the banks enabled on each logical CPU. Controls which respective
* descriptors to initialize later in mce_threshold_create_device(). * 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. */ /* 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_threshold_interrupt(void);
static void amd_deferred_error_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) ...@@ -267,7 +267,7 @@ static void smca_set_misc_banks_map(unsigned int bank, unsigned int cpu)
return; return;
if (low & MASK_BLKPTR_LO) 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, ...@@ -530,7 +530,7 @@ static u32 smca_get_block_address(unsigned int bank, unsigned int block,
if (!block) if (!block)
return MSR_AMD64_SMCA_MCx_MISC(bank); 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 0;
return MSR_AMD64_SMCA_MCx_MISCy(bank, block - 1); return MSR_AMD64_SMCA_MCx_MISCy(bank, block - 1);
...@@ -574,7 +574,7 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr, ...@@ -574,7 +574,7 @@ prepare_threshold_block(unsigned int bank, unsigned int block, u32 addr,
int new; int new;
if (!block) if (!block)
per_cpu(bank_map, cpu) |= (1 << bank); per_cpu(bank_map, cpu) |= BIT_ULL(bank);
memset(&b, 0, sizeof(b)); memset(&b, 0, sizeof(b));
b.cpu = cpu; b.cpu = cpu;
...@@ -878,7 +878,7 @@ static void amd_threshold_interrupt(void) ...@@ -878,7 +878,7 @@ static void amd_threshold_interrupt(void)
return; return;
for (bank = 0; bank < this_cpu_read(mce_num_banks); ++bank) { 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; continue;
first_block = bp[bank]->blocks; first_block = bp[bank]->blocks;
...@@ -1029,7 +1029,7 @@ static const struct sysfs_ops threshold_ops = { ...@@ -1029,7 +1029,7 @@ static const struct sysfs_ops threshold_ops = {
static void threshold_block_release(struct kobject *kobj); 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, .sysfs_ops = &threshold_ops,
.default_groups = default_groups, .default_groups = default_groups,
.release = threshold_block_release, .release = threshold_block_release,
...@@ -1356,7 +1356,7 @@ int mce_threshold_create_device(unsigned int cpu) ...@@ -1356,7 +1356,7 @@ int mce_threshold_create_device(unsigned int cpu)
return -ENOMEM; return -ENOMEM;
for (bank = 0; bank < numbanks; ++bank) { for (bank = 0; bank < numbanks; ++bank) {
if (!(this_cpu_read(bank_map) & (1 << bank))) if (!(this_cpu_read(bank_map) & BIT_ULL(bank)))
continue; continue;
err = threshold_create_bank(bp, cpu, bank); err = threshold_create_bank(bp, cpu, bank);
if (err) { if (err) {
......
...@@ -244,11 +244,11 @@ noinstr void pentium_machine_check(struct pt_regs *regs); ...@@ -244,11 +244,11 @@ noinstr void pentium_machine_check(struct pt_regs *regs);
noinstr void winchip_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; } static inline void enable_p5_mce(void) { mce_p5_enabled = 1; }
#else #else
static inline void intel_p5_mcheck_init(struct cpuinfo_x86 *c) {} static __always_inline void intel_p5_mcheck_init(struct cpuinfo_x86 *c) {}
static inline void winchip_mcheck_init(struct cpuinfo_x86 *c) {} static __always_inline void winchip_mcheck_init(struct cpuinfo_x86 *c) {}
static inline void enable_p5_mce(void) {} static __always_inline void enable_p5_mce(void) {}
static inline void pentium_machine_check(struct pt_regs *regs) {} static __always_inline void pentium_machine_check(struct pt_regs *regs) {}
static inline void winchip_machine_check(struct pt_regs *regs) {} static __always_inline void winchip_machine_check(struct pt_regs *regs) {}
#endif #endif
noinstr u64 mce_rdmsrl(u32 msr); noinstr u64 mce_rdmsrl(u32 msr);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment