Merge branch 'x86/asm' into locking/core
Upcoming changes to static keys is interacting/conflicting with the following
pending TSC commits in tip:x86/asm:
4ea1636b04 x86/asm/tsc: Rename native_read_tsc() to rdtsc()
...
So merge it into the locking tree to have a smoother resolution.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
commit
f320ead76a
93 changed files with 2075 additions and 1260 deletions
|
|
@ -49,13 +49,28 @@ static inline void exception_exit(enum ctx_state prev_ctx)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ct_state() - return the current context tracking state if known
|
||||
*
|
||||
* Returns the current cpu's context tracking state if context tracking
|
||||
* is enabled. If context tracking is disabled, returns
|
||||
* CONTEXT_DISABLED. This should be used primarily for debugging.
|
||||
*/
|
||||
static inline enum ctx_state ct_state(void)
|
||||
{
|
||||
return context_tracking_is_enabled() ?
|
||||
this_cpu_read(context_tracking.state) : CONTEXT_DISABLED;
|
||||
}
|
||||
#else
|
||||
static inline void user_enter(void) { }
|
||||
static inline void user_exit(void) { }
|
||||
static inline enum ctx_state exception_enter(void) { return 0; }
|
||||
static inline void exception_exit(enum ctx_state prev_ctx) { }
|
||||
static inline enum ctx_state ct_state(void) { return CONTEXT_DISABLED; }
|
||||
#endif /* !CONFIG_CONTEXT_TRACKING */
|
||||
|
||||
#define CT_WARN_ON(cond) WARN_ON(context_tracking_is_enabled() && (cond))
|
||||
|
||||
#ifdef CONFIG_CONTEXT_TRACKING_FORCE
|
||||
extern void context_tracking_init(void);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ struct context_tracking {
|
|||
bool active;
|
||||
int recursion;
|
||||
enum ctx_state {
|
||||
CONTEXT_DISABLED = -1, /* returned by ct_state() if unknown */
|
||||
CONTEXT_KERNEL = 0,
|
||||
CONTEXT_USER,
|
||||
CONTEXT_GUEST,
|
||||
|
|
|
|||
|
|
@ -296,7 +296,7 @@ static inline void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock)
|
|||
* Map the spin_lock functions to the raw variants for PREEMPT_RT=n
|
||||
*/
|
||||
|
||||
static inline raw_spinlock_t *spinlock_check(spinlock_t *lock)
|
||||
static __always_inline raw_spinlock_t *spinlock_check(spinlock_t *lock)
|
||||
{
|
||||
return &lock->rlock;
|
||||
}
|
||||
|
|
@ -307,17 +307,17 @@ do { \
|
|||
raw_spin_lock_init(&(_lock)->rlock); \
|
||||
} while (0)
|
||||
|
||||
static inline void spin_lock(spinlock_t *lock)
|
||||
static __always_inline void spin_lock(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_lock(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline void spin_lock_bh(spinlock_t *lock)
|
||||
static __always_inline void spin_lock_bh(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_lock_bh(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline int spin_trylock(spinlock_t *lock)
|
||||
static __always_inline int spin_trylock(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_trylock(&lock->rlock);
|
||||
}
|
||||
|
|
@ -337,7 +337,7 @@ do { \
|
|||
raw_spin_lock_nest_lock(spinlock_check(lock), nest_lock); \
|
||||
} while (0)
|
||||
|
||||
static inline void spin_lock_irq(spinlock_t *lock)
|
||||
static __always_inline void spin_lock_irq(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_lock_irq(&lock->rlock);
|
||||
}
|
||||
|
|
@ -352,32 +352,32 @@ do { \
|
|||
raw_spin_lock_irqsave_nested(spinlock_check(lock), flags, subclass); \
|
||||
} while (0)
|
||||
|
||||
static inline void spin_unlock(spinlock_t *lock)
|
||||
static __always_inline void spin_unlock(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_unlock(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline void spin_unlock_bh(spinlock_t *lock)
|
||||
static __always_inline void spin_unlock_bh(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_unlock_bh(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline void spin_unlock_irq(spinlock_t *lock)
|
||||
static __always_inline void spin_unlock_irq(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_unlock_irq(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
|
||||
static __always_inline void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags)
|
||||
{
|
||||
raw_spin_unlock_irqrestore(&lock->rlock, flags);
|
||||
}
|
||||
|
||||
static inline int spin_trylock_bh(spinlock_t *lock)
|
||||
static __always_inline int spin_trylock_bh(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_trylock_bh(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline int spin_trylock_irq(spinlock_t *lock)
|
||||
static __always_inline int spin_trylock_irq(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_trylock_irq(&lock->rlock);
|
||||
}
|
||||
|
|
@ -387,22 +387,22 @@ static inline int spin_trylock_irq(spinlock_t *lock)
|
|||
raw_spin_trylock_irqsave(spinlock_check(lock), flags); \
|
||||
})
|
||||
|
||||
static inline void spin_unlock_wait(spinlock_t *lock)
|
||||
static __always_inline void spin_unlock_wait(spinlock_t *lock)
|
||||
{
|
||||
raw_spin_unlock_wait(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline int spin_is_locked(spinlock_t *lock)
|
||||
static __always_inline int spin_is_locked(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_is_locked(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline int spin_is_contended(spinlock_t *lock)
|
||||
static __always_inline int spin_is_contended(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_is_contended(&lock->rlock);
|
||||
}
|
||||
|
||||
static inline int spin_can_lock(spinlock_t *lock)
|
||||
static __always_inline int spin_can_lock(spinlock_t *lock)
|
||||
{
|
||||
return raw_spin_can_lock(&lock->rlock);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue