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: Wed, 31 Aug 2016 11:44:35 +0100 From: Matt Redfearn <matt.redfearn@...tec.com> To: Ralf Baechle <ralf@...ux-mips.org> CC: <linux-mips@...ux-mips.org>, Matt Redfearn <matt.redfearn@...tec.com>, Adam Buchbinder <adam.buchbinder@...il.com>, Arnd Bergmann <arnd@...db.de>, Masahiro Yamada <yamada.masahiro@...ionext.com>, <linux-kernel@...r.kernel.org>, "Michael S. Tsirkin" <mst@...hat.com>, Markos Chandras <markos.chandras@...tec.com>, "Peter Zijlstra (Intel)" <peterz@...radead.org>, Paul Burton <paul.burton@...tec.com> Subject: [PATCH 06/10] MIPS: pm-cps: Use MIPS standard lightweight ordering barrier Since R2 of the MIPS architecture, SYNC(0x10) has been an optional but architecturally defined ordering barrier. If a CPU does not implement it, the arch specifies that it must fall back to SYNC(0). Define the barrier type and always use it in the pm-cps code rather than falling back to the heavyweight sync(0) such that we can benefit from the lighter weight sync. Signed-off-by: Matt Redfearn <matt.redfearn@...tec.com> Reviewed-by: Paul Burton <paul.burton@...tec.com> --- arch/mips/include/asm/barrier.h | 10 ++++++++++ arch/mips/kernel/pm-cps.c | 3 +-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h index d296633d890e..90c7a97db7e1 100644 --- a/arch/mips/include/asm/barrier.h +++ b/arch/mips/include/asm/barrier.h @@ -10,6 +10,16 @@ #include <asm/addrspace.h> +/* + * Lightweight sync types defined by the MIPS architecture + * These values are used with the sync instruction to perform memory barriers + * other than the standard heavyweight sync(0) completion barrier. + */ + +/* Lightweight ordering barrier */ +#define STYPE_SYNC_MB 0x10 + + #ifdef CONFIG_CPU_HAS_SYNC #define __sync() \ __asm__ __volatile__( \ diff --git a/arch/mips/kernel/pm-cps.c b/arch/mips/kernel/pm-cps.c index f8c8edd0a451..572dc1d016a0 100644 --- a/arch/mips/kernel/pm-cps.c +++ b/arch/mips/kernel/pm-cps.c @@ -76,7 +76,7 @@ static struct uasm_reloc relocs[32] __initdata; /* CPU dependant sync types */ static unsigned stype_intervention; static unsigned stype_memory; -static unsigned stype_ordering; +static unsigned stype_ordering = STYPE_SYNC_MB; enum mips_reg { zero, at, v0, v1, a0, a1, a2, a3, @@ -677,7 +677,6 @@ static int __init cps_pm_init(void) case CPU_P6600: stype_intervention = 0x2; stype_memory = 0x3; - stype_ordering = 0x10; break; default: -- 2.7.4
Powered by blists - more mailing lists