summaryrefslogtreecommitdiff
path: root/kernel/lglock.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2014-05-14 18:19:12 (GMT)
committerScott Wood <scottwood@freescale.com>2014-05-14 18:37:18 (GMT)
commit86ba38e6f5f2fbfe9b49e153ea89593b26482019 (patch)
treef99d2906b0eafca507f37289e68052fc105cc2dc /kernel/lglock.c
parent07c8b57b111585a617b2b456497fc9b33c00743c (diff)
downloadlinux-fsl-qoriq-86ba38e6f5f2fbfe9b49e153ea89593b26482019.tar.xz
Reset to 3.12.19
Diffstat (limited to 'kernel/lglock.c')
-rw-r--r--kernel/lglock.c54
1 files changed, 18 insertions, 36 deletions
diff --git a/kernel/lglock.c b/kernel/lglock.c
index f2356df..86ae2ae 100644
--- a/kernel/lglock.c
+++ b/kernel/lglock.c
@@ -4,15 +4,6 @@
#include <linux/cpu.h>
#include <linux/string.h>
-#ifndef CONFIG_PREEMPT_RT_FULL
-# define lg_lock_ptr arch_spinlock_t
-# define lg_do_lock(l) arch_spin_lock(l)
-# define lg_do_unlock(l) arch_spin_unlock(l)
-#else
-# define lg_lock_ptr struct rt_mutex
-# define lg_do_lock(l) __rt_spin_lock(l)
-# define lg_do_unlock(l) __rt_spin_unlock(l)
-#endif
/*
* Note there is no uninit, so lglocks cannot be defined in
* modules (but it's fine to use them from there)
@@ -21,60 +12,51 @@
void lg_lock_init(struct lglock *lg, char *name)
{
-#ifdef CONFIG_PREEMPT_RT_FULL
- int i;
-
- for_each_possible_cpu(i) {
- struct rt_mutex *lock = per_cpu_ptr(lg->lock, i);
-
- rt_mutex_init(lock);
- }
-#endif
LOCKDEP_INIT_MAP(&lg->lock_dep_map, name, &lg->lock_key, 0);
}
EXPORT_SYMBOL(lg_lock_init);
void lg_local_lock(struct lglock *lg)
{
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
- migrate_disable();
+ preempt_disable();
lock_acquire_shared(&lg->lock_dep_map, 0, 0, NULL, _RET_IP_);
lock = this_cpu_ptr(lg->lock);
- lg_do_lock(lock);
+ arch_spin_lock(lock);
}
EXPORT_SYMBOL(lg_local_lock);
void lg_local_unlock(struct lglock *lg)
{
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
lock_release(&lg->lock_dep_map, 1, _RET_IP_);
lock = this_cpu_ptr(lg->lock);
- lg_do_unlock(lock);
- migrate_enable();
+ arch_spin_unlock(lock);
+ preempt_enable();
}
EXPORT_SYMBOL(lg_local_unlock);
void lg_local_lock_cpu(struct lglock *lg, int cpu)
{
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
- preempt_disable_nort();
+ preempt_disable();
lock_acquire_shared(&lg->lock_dep_map, 0, 0, NULL, _RET_IP_);
lock = per_cpu_ptr(lg->lock, cpu);
- lg_do_lock(lock);
+ arch_spin_lock(lock);
}
EXPORT_SYMBOL(lg_local_lock_cpu);
void lg_local_unlock_cpu(struct lglock *lg, int cpu)
{
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
lock_release(&lg->lock_dep_map, 1, _RET_IP_);
lock = per_cpu_ptr(lg->lock, cpu);
- lg_do_unlock(lock);
- preempt_enable_nort();
+ arch_spin_unlock(lock);
+ preempt_enable();
}
EXPORT_SYMBOL(lg_local_unlock_cpu);
@@ -82,12 +64,12 @@ void lg_global_lock(struct lglock *lg)
{
int i;
- preempt_disable_nort();
+ preempt_disable();
lock_acquire_exclusive(&lg->lock_dep_map, 0, 0, NULL, _RET_IP_);
for_each_possible_cpu(i) {
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
lock = per_cpu_ptr(lg->lock, i);
- lg_do_lock(lock);
+ arch_spin_lock(lock);
}
}
EXPORT_SYMBOL(lg_global_lock);
@@ -98,10 +80,10 @@ void lg_global_unlock(struct lglock *lg)
lock_release(&lg->lock_dep_map, 1, _RET_IP_);
for_each_possible_cpu(i) {
- lg_lock_ptr *lock;
+ arch_spinlock_t *lock;
lock = per_cpu_ptr(lg->lock, i);
- lg_do_unlock(lock);
+ arch_spin_unlock(lock);
}
- preempt_enable_nort();
+ preempt_enable();
}
EXPORT_SYMBOL(lg_global_unlock);