Skip to content

Commit

Permalink
i386: add cpu_relax() to cmos_lock()
Browse files Browse the repository at this point in the history
Add cpu_relax() to cmos_lock() inline function for faster operation on SMT
CPUs and less power consumption on others in case of lock contention (which
probably doesn't happen too often, so admittedly this patch is not too
exciting).

[akpm@linux-foundation.org: Include the header file for cpu_relax()]
Signed-off-by: Andreas Mohr <andi@lisas.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
  • Loading branch information
Andreas Mohr authored and Linus Torvalds committed Jul 22, 2007
1 parent 8f03d6c commit 267eb01
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion include/asm-i386/mc146818rtc.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include <asm/io.h>
#include <asm/system.h>
#include <asm/processor.h>
#include <linux/mc146818rtc.h>

#ifndef RTC_PORT
Expand Down Expand Up @@ -43,8 +44,10 @@ static inline void lock_cmos(unsigned char reg)
unsigned long new;
new = ((smp_processor_id()+1) << 8) | reg;
for (;;) {
if (cmos_lock)
if (cmos_lock) {
cpu_relax();
continue;
}
if (__cmpxchg(&cmos_lock, 0, new, sizeof(cmos_lock)) == 0)
return;
}
Expand Down

0 comments on commit 267eb01

Please sign in to comment.