Commit fea886ed authored by Thomas Gleixner's avatar Thomas Gleixner

clocksource: Convert clocksource_lock to atomic_spinlock

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent cb1ba1de
...@@ -127,7 +127,7 @@ static struct clocksource *curr_clocksource = &clocksource_jiffies; ...@@ -127,7 +127,7 @@ static struct clocksource *curr_clocksource = &clocksource_jiffies;
static struct clocksource *next_clocksource; static struct clocksource *next_clocksource;
static struct clocksource *clocksource_override; static struct clocksource *clocksource_override;
static LIST_HEAD(clocksource_list); static LIST_HEAD(clocksource_list);
static DEFINE_SPINLOCK(clocksource_lock); static DEFINE_ATOMIC_SPINLOCK(clocksource_lock);
static char override_name[32]; static char override_name[32];
static int finished_booting; static int finished_booting;
...@@ -296,7 +296,7 @@ void clocksource_resume(void) ...@@ -296,7 +296,7 @@ void clocksource_resume(void)
struct clocksource *cs; struct clocksource *cs;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
list_for_each_entry(cs, &clocksource_list, list) { list_for_each_entry(cs, &clocksource_list, list) {
if (cs->resume) if (cs->resume)
...@@ -305,7 +305,7 @@ void clocksource_resume(void) ...@@ -305,7 +305,7 @@ void clocksource_resume(void)
clocksource_resume_watchdog(); clocksource_resume_watchdog();
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
} }
/** /**
...@@ -328,12 +328,12 @@ struct clocksource *clocksource_get_next(void) ...@@ -328,12 +328,12 @@ struct clocksource *clocksource_get_next(void)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
if (next_clocksource && finished_booting) { if (next_clocksource && finished_booting) {
curr_clocksource = next_clocksource; curr_clocksource = next_clocksource;
next_clocksource = NULL; next_clocksource = NULL;
} }
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
return curr_clocksource; return curr_clocksource;
} }
...@@ -402,11 +402,11 @@ int clocksource_register(struct clocksource *c) ...@@ -402,11 +402,11 @@ int clocksource_register(struct clocksource *c)
unsigned long flags; unsigned long flags;
int ret; int ret;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
ret = clocksource_enqueue(c); ret = clocksource_enqueue(c);
if (!ret) if (!ret)
next_clocksource = select_clocksource(); next_clocksource = select_clocksource();
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
if (!ret) if (!ret)
clocksource_check_watchdog(c); clocksource_check_watchdog(c);
return ret; return ret;
...@@ -421,12 +421,12 @@ void clocksource_change_rating(struct clocksource *cs, int rating) ...@@ -421,12 +421,12 @@ void clocksource_change_rating(struct clocksource *cs, int rating)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
list_del(&cs->list); list_del(&cs->list);
cs->rating = rating; cs->rating = rating;
clocksource_enqueue(cs); clocksource_enqueue(cs);
next_clocksource = select_clocksource(); next_clocksource = select_clocksource();
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
} }
/** /**
...@@ -436,12 +436,12 @@ void clocksource_unregister(struct clocksource *cs) ...@@ -436,12 +436,12 @@ void clocksource_unregister(struct clocksource *cs)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
list_del(&cs->list); list_del(&cs->list);
if (clocksource_override == cs) if (clocksource_override == cs)
clocksource_override = NULL; clocksource_override = NULL;
next_clocksource = select_clocksource(); next_clocksource = select_clocksource();
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
} }
#ifdef CONFIG_SYSFS #ifdef CONFIG_SYSFS
...@@ -458,9 +458,9 @@ sysfs_show_current_clocksources(struct sys_device *dev, ...@@ -458,9 +458,9 @@ sysfs_show_current_clocksources(struct sys_device *dev,
{ {
ssize_t count = 0; ssize_t count = 0;
spin_lock_irq(&clocksource_lock); atomic_spin_lock_irq(&clocksource_lock);
count = snprintf(buf, PAGE_SIZE, "%s\n", curr_clocksource->name); count = snprintf(buf, PAGE_SIZE, "%s\n", curr_clocksource->name);
spin_unlock_irq(&clocksource_lock); atomic_spin_unlock_irq(&clocksource_lock);
return count; return count;
} }
...@@ -490,7 +490,7 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev, ...@@ -490,7 +490,7 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev,
if (buf[count-1] == '\n') if (buf[count-1] == '\n')
count--; count--;
spin_lock_irq(&clocksource_lock); atomic_spin_lock_irq(&clocksource_lock);
if (count > 0) if (count > 0)
memcpy(override_name, buf, count); memcpy(override_name, buf, count);
...@@ -527,7 +527,7 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev, ...@@ -527,7 +527,7 @@ static ssize_t sysfs_override_clocksource(struct sys_device *dev,
next_clocksource = select_clocksource(); next_clocksource = select_clocksource();
} }
spin_unlock_irq(&clocksource_lock); atomic_spin_unlock_irq(&clocksource_lock);
return ret; return ret;
} }
...@@ -547,7 +547,7 @@ sysfs_show_available_clocksources(struct sys_device *dev, ...@@ -547,7 +547,7 @@ sysfs_show_available_clocksources(struct sys_device *dev,
struct clocksource *src; struct clocksource *src;
ssize_t count = 0; ssize_t count = 0;
spin_lock_irq(&clocksource_lock); atomic_spin_lock_irq(&clocksource_lock);
list_for_each_entry(src, &clocksource_list, list) { list_for_each_entry(src, &clocksource_list, list) {
/* /*
* Don't show non-HRES clocksource if the tick code is * Don't show non-HRES clocksource if the tick code is
...@@ -559,7 +559,7 @@ sysfs_show_available_clocksources(struct sys_device *dev, ...@@ -559,7 +559,7 @@ sysfs_show_available_clocksources(struct sys_device *dev,
max((ssize_t)PAGE_SIZE - count, (ssize_t)0), max((ssize_t)PAGE_SIZE - count, (ssize_t)0),
"%s ", src->name); "%s ", src->name);
} }
spin_unlock_irq(&clocksource_lock); atomic_spin_unlock_irq(&clocksource_lock);
count += snprintf(buf + count, count += snprintf(buf + count,
max((ssize_t)PAGE_SIZE - count, (ssize_t)0), "\n"); max((ssize_t)PAGE_SIZE - count, (ssize_t)0), "\n");
...@@ -615,10 +615,10 @@ device_initcall(init_clocksource_sysfs); ...@@ -615,10 +615,10 @@ device_initcall(init_clocksource_sysfs);
static int __init boot_override_clocksource(char* str) static int __init boot_override_clocksource(char* str)
{ {
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&clocksource_lock, flags); atomic_spin_lock_irqsave(&clocksource_lock, flags);
if (str) if (str)
strlcpy(override_name, str, sizeof(override_name)); strlcpy(override_name, str, sizeof(override_name));
spin_unlock_irqrestore(&clocksource_lock, flags); atomic_spin_unlock_irqrestore(&clocksource_lock, flags);
return 1; return 1;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment