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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20101214224848.GA1706@debian.debian>
Date:	Tue, 14 Dec 2010 23:48:48 +0100
From:	Jonathan Neuschäfer <j.neuschaefer@....net>
To:	linux-kernel@...r.kernel.org
Cc:	Russell King <linux@....linux.org.uk>,
	Nicolas Pitre <nicolas.pitre@...aro.org>,
	Catalin Marinas <catalin.marinas@....com>,
	Will Deacon <will.deacon@....com>,
	Kevin Hilman <khilman@...prootsystems.com>,
	Tony Lindgren <tony@...mide.com>,
	Jeremy Kerr <jeremy.kerr@...onical.com>,
	Eric Miao <eric.y.miao@...il.com>,
	linux-arm-kernel@...ts.infradead.org
Subject: [PATCH] arch/arm/kernel: use cpu_relax() in halt loops

Looking throught arch/arm/kernel/ I found some halt loops.
I just thought we could save some power here using cpu_relax(),
or am I missing something?

Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@....net>
---
 arch/arm/kernel/process.c |    6 ++++--
 arch/arm/kernel/setup.c   |    7 +++++--
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index e76fcaa..4a83fdf 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -124,7 +124,8 @@ void arm_machine_restart(char mode, const char *cmd)
 	 */
 	mdelay(1000);
 	printk("Reboot failed -- System halted\n");
-	while (1);
+	while (1)
+		cpu_relax();
 }
 
 /*
@@ -235,7 +236,8 @@ void machine_shutdown(void)
 void machine_halt(void)
 {
 	machine_shutdown();
-	while (1);
+	while (1)
+		cpu_relax();
 }
 
 void machine_power_off(void)
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 336f14e..0d77329 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -41,6 +41,7 @@
 #include <asm/cacheflush.h>
 #include <asm/cachetype.h>
 #include <asm/tlbflush.h>
+#include <asm/processor.h>
 
 #include <asm/mach/arch.h>
 #include <asm/mach/irq.h>
@@ -337,7 +338,8 @@ static void __init setup_processor(void)
 	if (!list) {
 		printk("CPU configuration botched (ID %08x), unable "
 		       "to continue.\n", read_cpuid_id());
-		while (1);
+		while (1)
+			cpu_relax();
 	}
 
 	cpu_name = list->cpu_name;
@@ -434,7 +436,8 @@ static struct machine_desc * __init setup_machine(unsigned int nr)
 	if (!list) {
 		printk("Machine configuration botched (nr %d), unable "
 		       "to continue.\n", nr);
-		while (1);
+		while (1)
+			cpu_relax();
 	}
 
 	printk("Machine: %s\n", list->name);
-- 
1.7.2.3
--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ