diff options
author | Nicholas Piggin <npiggin@gmail.com> | 2017-05-22 15:53:00 +1000 |
---|---|---|
committer | Stewart Smith <stewart@linux.vnet.ibm.com> | 2017-06-06 20:49:06 +1000 |
commit | 38b0c8454b56a74fe785f0db1d218afa8f6ea478 (patch) | |
tree | 2371fcb67e716a7cd16016031cd3554d1afddede /include | |
parent | 41b14f9452c25f3dd74a8304763a3cc58bff019f (diff) | |
download | skiboot-38b0c8454b56a74fe785f0db1d218afa8f6ea478.zip skiboot-38b0c8454b56a74fe785f0db1d218afa8f6ea478.tar.gz skiboot-38b0c8454b56a74fe785f0db1d218afa8f6ea478.tar.bz2 |
cpu: Introduce smt_lowest()
Recent CPUs have introduced a lower SMT priority. This uses the
Linux pattern of executing priority nops in descending order to
get a simple portable way to put the CPU into lowest SMT priority.
Introduce smt_lowest() and use it in place of smt_very_low and
smt_low ; smt_very_low sequences.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/cpu.h | 3 | ||||
-rw-r--r-- | include/processor.h | 2 |
2 files changed, 3 insertions, 2 deletions
diff --git a/include/cpu.h b/include/cpu.h index 1e147aa..938492e 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -121,8 +121,7 @@ extern struct cpu_thread *boot_cpu; static inline void __nomcount cpu_relax(void) { /* Relax a bit to give sibling threads some breathing space */ - smt_low(); - smt_very_low(); + smt_lowest(); asm volatile("nop; nop; nop; nop;\n" "nop; nop; nop; nop;\n" "nop; nop; nop; nop;\n" diff --git a/include/processor.h b/include/processor.h index b98dff8..5906b86 100644 --- a/include/processor.h +++ b/include/processor.h @@ -197,6 +197,7 @@ #define smt_medium_low or 6,6,6 #define smt_extra_high or 7,7,7 #define smt_very_low or 31,31,31 +#define smt_lowest smt_low ; smt_very_low #else /* __ASSEMBLY__ */ @@ -214,6 +215,7 @@ static inline void smt_medium_high(void){ asm volatile("or 5,5,5"); } static inline void smt_medium_low(void) { asm volatile("or 6,6,6"); } static inline void smt_extra_high(void) { asm volatile("or 7,7,7"); } static inline void smt_very_low(void) { asm volatile("or 31,31,31"); } +static inline void smt_lowest(void) { smt_low(); smt_very_low(); } /* * SPR access functions |