mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 02:36:51 +07:00
powerpc/64: move default SPR recording
Move this into the early setup code, and don't iterate over CPU masks. We don't want to call into sysfs so early from setup, and a future patch won't initialize CPU masks by the time this is called. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> [mpe: Fold in incremental fix from Nick for DSCR handling] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
9bd9be006c
commit
c0abd0c745
@ -45,14 +45,11 @@ void emergency_stack_init(void);
|
||||
static inline void emergency_stack_init(void) { };
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
void record_spr_defaults(void);
|
||||
#else
|
||||
static inline void record_spr_defaults(void) { };
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
u64 ppc64_bolted_size(void);
|
||||
|
||||
/* Default SPR values from firmware/kexec */
|
||||
extern unsigned long spr_default_dscr;
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
@ -254,6 +254,14 @@ static void cpu_ready_for_interrupts(void)
|
||||
get_paca()->kernel_msr = MSR_KERNEL;
|
||||
}
|
||||
|
||||
unsigned long spr_default_dscr = 0;
|
||||
|
||||
void __init record_spr_defaults(void)
|
||||
{
|
||||
if (early_cpu_has_feature(CPU_FTR_DSCR))
|
||||
spr_default_dscr = mfspr(SPRN_DSCR);
|
||||
}
|
||||
|
||||
/*
|
||||
* Early initialization entry point. This is called by head.S
|
||||
* with MMU translation disabled. We rely on the "feature" of
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include <asm/firmware.h>
|
||||
|
||||
#include "cacheinfo.h"
|
||||
#include "setup.h"
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#include <asm/paca.h>
|
||||
@ -588,21 +589,18 @@ static DEVICE_ATTR(dscr_default, 0600,
|
||||
|
||||
static void sysfs_create_dscr_default(void)
|
||||
{
|
||||
int err = 0;
|
||||
if (cpu_has_feature(CPU_FTR_DSCR))
|
||||
err = device_create_file(cpu_subsys.dev_root, &dev_attr_dscr_default);
|
||||
}
|
||||
|
||||
void __init record_spr_defaults(void)
|
||||
{
|
||||
int cpu;
|
||||
|
||||
if (cpu_has_feature(CPU_FTR_DSCR)) {
|
||||
dscr_default = mfspr(SPRN_DSCR);
|
||||
for (cpu = 0; cpu < nr_cpu_ids; cpu++)
|
||||
int err = 0;
|
||||
int cpu;
|
||||
|
||||
dscr_default = spr_default_dscr;
|
||||
for_each_possible_cpu(cpu)
|
||||
paca_ptrs[cpu]->dscr_default = dscr_default;
|
||||
|
||||
err = device_create_file(cpu_subsys.dev_root, &dev_attr_dscr_default);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
||||
#ifdef HAS_PPC_PMC_PA6T
|
||||
|
Loading…
Reference in New Issue
Block a user