lkml.org 
[lkml]   [2015]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 2/3] locking: ww_mutex: Allow to use rt_mutex instead of mutex for the baselock
On Fri, Feb 27, 2015 at 05:57:08PM +0100, Sebastian Andrzej Siewior wrote:
> diff --git a/kernel/locking/mutex.c b/kernel/locking/mutex.c
> index 16b2d3cc88b0..0a652ba46081 100644
> --- a/kernel/locking/mutex.c
> +++ b/kernel/locking/mutex.c
> @@ -106,6 +106,7 @@ void __sched mutex_lock(struct mutex *lock)
> EXPORT_SYMBOL(mutex_lock);
> #endif
>
> +#ifndef CONFIG_WW_MUTEX_RTMUTEX
> static __always_inline void ww_mutex_lock_acquired(struct ww_mutex *ww,
> struct ww_acquire_ctx *ww_ctx)
> {
> @@ -215,6 +216,7 @@ ww_mutex_set_context_slowpath(struct ww_mutex *lock,
> wake_up_process(cur->task);
> }
> }
> +#endif

Should we shuffle the code a bit to collect all the ww_mutex functions
in one #ifdef block?

> #ifdef CONFIG_MUTEX_SPIN_ON_OWNER
> /*
> @@ -328,6 +330,7 @@ static bool mutex_optimistic_spin(struct mutex *lock,
> while (true) {
> struct task_struct *owner;
>
> +#ifndef CONFIG_WW_MUTEX_RTMUTEX
> if (use_ww_ctx && ww_ctx->acquired > 0) {
> struct ww_mutex *ww;
>
> @@ -343,7 +346,7 @@ static bool mutex_optimistic_spin(struct mutex *lock,
> if (READ_ONCE(ww->ctx))
> break;
> }
> -
> +#endif
> /*
> * If there's an owner, wait for it to either
> * release the lock or go to sleep.
> @@ -356,12 +359,14 @@ static bool mutex_optimistic_spin(struct mutex *lock,
> if (mutex_try_to_acquire(lock)) {
> lock_acquired(&lock->dep_map, ip);
>
> +#ifndef CONFIG_WW_MUTEX_RTMUTEX
> if (use_ww_ctx) {
> struct ww_mutex *ww;
> ww = container_of(lock, struct ww_mutex, base);
>
> ww_mutex_set_context_fastpath(ww, ww_ctx);
> }
> +#endif
>
> mutex_set_owner(lock);
> osq_unlock(&lock->osq);
> @@ -445,6 +450,7 @@ void __sched mutex_unlock(struct mutex *lock)
>
> EXPORT_SYMBOL(mutex_unlock);

Are those ifdefs really needed, if we provide stubs and ensure to only
call mutex_optimistic_spin/__mutex_lock_common with .ww_ctx=NULL,
.use_ww_ctx = false, this should all just go away without #ifdefs,
right?


\
 
 \ /
  Last update: 2015-03-10 13:41    [W:0.158 / U:0.724 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site