powerpc/64: Set DSCR default initially from SPR
Take the DSCR value set by firmware as the dscr_default value, rather than zero. POWER9 recommends DSCR default to a non-zero value. Signed-off-by: From: Nicholas Piggin <npiggin@gmail.com> [mpe: Make record_spr_defaults() __init] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
339a3293f4
commit
1696d0fb7f
|
@ -45,6 +45,12 @@ void emergency_stack_init(void);
|
||||||
static inline void emergency_stack_init(void) { };
|
static inline void emergency_stack_init(void) { };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC64
|
||||||
|
void record_spr_defaults(void);
|
||||||
|
#else
|
||||||
|
static inline void record_spr_defaults(void) { };
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Having this in kvm_ppc.h makes include dependencies too
|
* Having this in kvm_ppc.h makes include dependencies too
|
||||||
* tricky to solve for setup-common.c so have it here.
|
* tricky to solve for setup-common.c so have it here.
|
||||||
|
|
|
@ -69,6 +69,8 @@
|
||||||
#include <asm/opal.h>
|
#include <asm/opal.h>
|
||||||
#include <asm/cputhreads.h>
|
#include <asm/cputhreads.h>
|
||||||
|
|
||||||
|
#include "setup.h"
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
#define DBG(fmt...) udbg_printf(fmt)
|
#define DBG(fmt...) udbg_printf(fmt)
|
||||||
#else
|
#else
|
||||||
|
@ -316,6 +318,13 @@ void __init early_setup(unsigned long dt_ptr)
|
||||||
/* Initialize the hash table or TLB handling */
|
/* Initialize the hash table or TLB handling */
|
||||||
early_init_mmu();
|
early_init_mmu();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* After firmware and early platform setup code has set things up,
|
||||||
|
* we note the SPR values for configurable control/performance
|
||||||
|
* registers, and use those as initial defaults.
|
||||||
|
*/
|
||||||
|
record_spr_defaults();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* At this point, we can let interrupts switch to virtual mode
|
* At this point, we can let interrupts switch to virtual mode
|
||||||
* (the MMU has been setup), so adjust the MSR in the PACA to
|
* (the MMU has been setup), so adjust the MSR in the PACA to
|
||||||
|
|
|
@ -590,6 +590,17 @@ static void sysfs_create_dscr_default(void)
|
||||||
if (cpu_has_feature(CPU_FTR_DSCR))
|
if (cpu_has_feature(CPU_FTR_DSCR))
|
||||||
err = device_create_file(cpu_subsys.dev_root, &dev_attr_dscr_default);
|
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++)
|
||||||
|
paca[cpu].dscr_default = dscr_default;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif /* CONFIG_PPC64 */
|
#endif /* CONFIG_PPC64 */
|
||||||
|
|
||||||
#ifdef HAS_PPC_PMC_PA6T
|
#ifdef HAS_PPC_PMC_PA6T
|
||||||
|
|
Loading…
Reference in New Issue