lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 27 Dec 2015 15:23:37 +0200 From: Noam Camus <noamc@...hip.com> To: <linux-snps-arc@...ts.infradead.org> CC: <linux-kernel@...r.kernel.org>, <cmetcalf@...hip.com>, <daniel.lezcano@...aro.org>, <marc.zyngier@....com>, Tal Zilcer <talz@...hip.com>, Noam Camus <noamc@...hip.com>, Peter Zijlstra <peterz@...radead.org> Subject: [PATCH v5 18/20] ARC: [plat-eznps] Use dedicated cpu_relax() From: Tal Zilcer <talz@...hip.com> Since the CTOP is SMT hardware multi-threaded, we need to hint the HW that now will be a very good time to do a hardware thread context switching. This is done by issuing the schd.rw instruction (binary coded here so as to not require specific revision of GCC to build the kernel). sched.rw means that Thread becomes eligible for execution by the threads scheduler after all pending read/write transactions were completed. Implementing cpu_relax_lowlatency() with barrier() Since with current semantics of cpu_relax() it may take a while till yielded CPU will get back. Signed-off-by: Noam Camus <noamc@...hip.com> Cc: Peter Zijlstra <peterz@...radead.org> Acked-by: Vineet Gupta <vgupta@...opsys.com> --- arch/arc/include/asm/processor.h | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/arch/arc/include/asm/processor.h b/arch/arc/include/asm/processor.h index 41142ab..974b878 100644 --- a/arch/arc/include/asm/processor.h +++ b/arch/arc/include/asm/processor.h @@ -57,9 +57,18 @@ struct task_struct; * A lot of busy-wait loops in SMP are based off of non-volatile data otherwise * get optimised away by gcc */ +#ifndef CONFIG_EZNPS_MTM_EXT #define cpu_relax() __asm__ __volatile__ ("" : : : "memory") +#else +#define cpu_relax() \ + __asm__ __volatile__ (".word %0" : : "i"(CTOP_INST_SCHD_RW) : "memory") +#endif +#ifndef CONFIG_EZNPS_MTM_EXT #define cpu_relax_lowlatency() cpu_relax() +#else +#define cpu_relax_lowlatency() barrier() +#endif #define copy_segments(tsk, mm) do { } while (0) #define release_segments(mm) do { } while (0) -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists