All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.