Thread (3 messages) flat view 3 messages, 2 authors, 2019-09-17

Re: [PATCH v2] PPC: Set reserved PCR bits

From: Alistair Popple <hidden>
Date: 2019-09-17 00:52:09

Those definitions were introduced in a previous commit so I've posted a new 
series to fix the definitions first. Thanks.

- Alistair

On Monday, 16 September 2019 7:49:26 PM AEST Michael Ellerman wrote:
Alistair Popple [off-list ref] writes:
quoted
Currently the reserved bits of the Processor Compatibility Register
(PCR) are cleared as per the Programming Note in Section 1.3.3 of
version 3.0B of the Power ISA. This causes all new architecture
features to be made available when running on newer processors with
new architecture features added to the PCR as bits must be set to
disable a given feature.

For example to disable new features added as part of Version 2.07 of
the ISA the corresponding bit in the PCR needs to be set.

As new processor features generally require explicit kernel support
they should be disabled until such support is implemented. Therefore
kernels should set all unknown/reserved bits in the PCR such that any
new architecture features which the kernel does not currently know
about get disabled.

An update is planned to the ISA to clarify that the PCR is an
exception to the Programming Note on reserved bits in Section 1.3.3.

Signed-off-by: Alistair Popple <redacted>
Signed-off-by: Jordan Niethe <redacted>
Tested-by: Joel Stanley <joel@jms.id.au>
---
v2: Added some clarifications to the commit message
---
 arch/powerpc/include/asm/reg.h          |  3 +++
 arch/powerpc/kernel/cpu_setup_power.S   |  6 ++++++
 arch/powerpc/kernel/dt_cpu_ftrs.c       |  3 ++-
 arch/powerpc/kvm/book3s_hv.c            | 11 +++++++----
 arch/powerpc/kvm/book3s_hv_nested.c     |  6 +++---
 arch/powerpc/kvm/book3s_hv_rmhandlers.S | 10 ++++++----
 6 files changed, 27 insertions(+), 12 deletions(-)
diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/
reg.h
quoted
index 10caa145f98b..258435c75c43 100644
--- a/arch/powerpc/include/asm/reg.h
+++ b/arch/powerpc/include/asm/reg.h
@@ -475,6 +475,7 @@
 #define   PCR_VEC_DIS	(1ul << (63-0))	/* Vec. disable (bit NA since 
POWER8) */
quoted
 #define   PCR_VSX_DIS	(1ul << (63-1))	/* VSX disable (bit NA since 
POWER8) */
quoted
 #define   PCR_TM_DIS	(1ul << (63-2))	/* Trans. memory disable (POWER8) 
*/
quoted
+#define   PCR_HIGH_BITS	(PCR_VEC_DIS | PCR_VSX_DIS | PCR_TM_DIS)
This doesn't build with old binutils that don't support 'ul', eg:

  arch/powerpc/kvm/book3s_hv_rmhandlers.S:647: Error: junk at end of line, 
first unrecognized character is `u'
  arch/powerpc/kvm/book3s_hv_rmhandlers.S:647: Error: missing ')'
  arch/powerpc/kvm/book3s_hv_rmhandlers.S:647: Error: junk at end of line: 
`ul<<(63-0))|(1ul<<(63-1))|(1ul<<(63-2)))|(0x8|0x4|0x2)))>>32)@h'
  arch/powerpc/kernel/cpu_setup_power.S:131: Error: syntax error; found `u', 
expected `,'
  arch/powerpc/kernel/cpu_setup_power.S:131: Error: junk at end of line: 
`ul<<(63-0))|(1ul<<(63-1))|(1ul<<(63-2)))|(0x8|0x4|0x2)))@l'
etc. http://kisskb.ellerman.id.au/kisskb/buildresult/13957233/ 

There's a gcc-4.6 with an old binutils on the ka's.

cheers


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help