* [PATCH] powerpc/64: set DSCR default initially from SPR
@ 2017-10-24 11:44 Nicholas Piggin
2017-10-25 10:01 ` Michael Ellerman
2017-11-14 11:12 ` Michael Ellerman
0 siblings, 2 replies; 4+ messages in thread
From: Nicholas Piggin @ 2017-10-24 11:44 UTC (permalink / raw)
To: linuxppc-dev; +Cc: Nicholas Piggin
Take the DSCR value set by firmware as the dscr_default value,
rather than zero.
POWER9 recommends DSCR default to a non-zero value.
From: Nicholas Piggin <npiggin@gmail.com>
---
This has a problem that OS which set the DSCR to non-default
then kexec to Linux will be used as our default. I send a
corresponding patch to skiboot which resets SPRs in opal_reinit_cpus
which will make this do the right thing in that case.
arch/powerpc/kernel/setup.h | 6 ++++++
arch/powerpc/kernel/setup_64.c | 9 +++++++++
arch/powerpc/kernel/sysfs.c | 11 +++++++++++
3 files changed, 26 insertions(+)
diff --git a/arch/powerpc/kernel/setup.h b/arch/powerpc/kernel/setup.h
index cfba134b3024..21c18071d9d5 100644
--- a/arch/powerpc/kernel/setup.h
+++ b/arch/powerpc/kernel/setup.h
@@ -45,6 +45,12 @@ 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
+
/*
* Having this in kvm_ppc.h makes include dependencies too
* tricky to solve for setup-common.c so have it here.
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c
index b89c6aac48c9..911c4d606453 100644
--- a/arch/powerpc/kernel/setup_64.c
+++ b/arch/powerpc/kernel/setup_64.c
@@ -69,6 +69,8 @@
#include <asm/opal.h>
#include <asm/cputhreads.h>
+#include "setup.h"
+
#ifdef DEBUG
#define DBG(fmt...) udbg_printf(fmt)
#else
@@ -317,6 +319,13 @@ void __init early_setup(unsigned long dt_ptr)
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
* (the MMU has been setup), so adjust the MSR in the PACA to
* have IR and DR set and enable AIL if it exists
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c
index 4437c70c7c2b..d60f6f5c7b0c 100644
--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -590,6 +590,17 @@ static void sysfs_create_dscr_default(void)
if (cpu_has_feature(CPU_FTR_DSCR))
err = device_create_file(cpu_subsys.dev_root, &dev_attr_dscr_default);
}
+
+void 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 */
#ifdef HAS_PPC_PMC_PA6T
--
2.13.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] powerpc/64: set DSCR default initially from SPR
2017-10-24 11:44 [PATCH] powerpc/64: set DSCR default initially from SPR Nicholas Piggin
@ 2017-10-25 10:01 ` Michael Ellerman
2017-10-25 14:30 ` Nicholas Piggin
2017-11-14 11:12 ` Michael Ellerman
1 sibling, 1 reply; 4+ messages in thread
From: Michael Ellerman @ 2017-10-25 10:01 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev; +Cc: Nicholas Piggin
Nicholas Piggin <npiggin@gmail.com> writes:
> Take the DSCR value set by firmware as the dscr_default value,
> rather than zero.
>
> POWER9 recommends DSCR default to a non-zero value.
>
> From: Nicholas Piggin <npiggin@gmail.com>
> ---
> This has a problem that OS which set the DSCR to non-default
> then kexec to Linux will be used as our default. I send a
> corresponding patch to skiboot which resets SPRs in opal_reinit_cpus
> which will make this do the right thing in that case.
That doesn't work for pseries etc.
We should reset it in the kexec down path.
cheers
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] powerpc/64: set DSCR default initially from SPR
2017-10-25 10:01 ` Michael Ellerman
@ 2017-10-25 14:30 ` Nicholas Piggin
0 siblings, 0 replies; 4+ messages in thread
From: Nicholas Piggin @ 2017-10-25 14:30 UTC (permalink / raw)
To: Michael Ellerman; +Cc: linuxppc-dev
On Wed, 25 Oct 2017 12:01:10 +0200
Michael Ellerman <mpe@ellerman.id.au> wrote:
> Nicholas Piggin <npiggin@gmail.com> writes:
>
> > Take the DSCR value set by firmware as the dscr_default value,
> > rather than zero.
> >
> > POWER9 recommends DSCR default to a non-zero value.
> >
> > From: Nicholas Piggin <npiggin@gmail.com>
> > ---
> > This has a problem that OS which set the DSCR to non-default
> > then kexec to Linux will be used as our default. I send a
> > corresponding patch to skiboot which resets SPRs in opal_reinit_cpus
> > which will make this do the right thing in that case.
>
> That doesn't work for pseries etc.
>
> We should reset it in the kexec down path.
Okay I'll add that too. We should have a hypercall to reset all
the state for us like opal_reinit_cpus I reckon, but restoring
it before kexec isn't a bad idea even if we had such a thing.
Thanks,
Nick
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: powerpc/64: set DSCR default initially from SPR
2017-10-24 11:44 [PATCH] powerpc/64: set DSCR default initially from SPR Nicholas Piggin
2017-10-25 10:01 ` Michael Ellerman
@ 2017-11-14 11:12 ` Michael Ellerman
1 sibling, 0 replies; 4+ messages in thread
From: Michael Ellerman @ 2017-11-14 11:12 UTC (permalink / raw)
To: Nicholas Piggin, linuxppc-dev; +Cc: Nicholas Piggin
On Tue, 2017-10-24 at 11:44:44 UTC, Nicholas Piggin wrote:
> Take the DSCR value set by firmware as the dscr_default value,
> rather than zero.
>
> POWER9 recommends DSCR default to a non-zero value.
>
> From: Nicholas Piggin <npiggin@gmail.com>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/1696d0fb7fcd18160c9cc92a3f2b2d
cheers
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-11-14 11:12 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-24 11:44 [PATCH] powerpc/64: set DSCR default initially from SPR Nicholas Piggin
2017-10-25 10:01 ` Michael Ellerman
2017-10-25 14:30 ` Nicholas Piggin
2017-11-14 11:12 ` Michael Ellerman
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.