Skip to content
Permalink
Andy-Shevchenk…
Switch branches/tags

Commits on Oct 13, 2021

  1. media: entity: Replace kernel.h with the necessary inclusions

    When kernel.h is used in the headers it adds a lot into dependency hell,
    especially when there are circular dependencies are involved.
    
    Replace kernel.h inclusion with the list of what is really being used.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  2. plist: Replace kernel.h with the necessary inclusions

    When kernel.h is used in the headers it adds a lot into dependency hell,
    especially when there are circular dependencies are involved.
    
    Replace kernel.h inclusion with the list of what is really being used.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  3. llist: Replace kernel.h with the necessary inclusions

    When kernel.h is used in the headers it adds a lot into dependency hell,
    especially when there are circular dependencies are involved.
    
    Replace kernel.h inclusion with the list of what is really being used.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  4. list: Replace kernel.h with the necessary inclusions

    When kernel.h is used in the headers it adds a lot into dependency hell,
    especially when there are circular dependencies are involved.
    
    Replace kernel.h inclusion with the list of what is really being used.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  5. kunit: Replace kernel.h with the necessary inclusions

    When kernel.h is used in the headers it adds a lot into dependency hell,
    especially when there are circular dependencies are involved.
    
    Replace kernel.h inclusion with the list of what is really being used.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  6. kernel.h: Split out container_of() and typeof_member() macros

    kernel.h is being used as a dump for all kinds of stuff for a long time.
    Here is the attempt cleaning it up by splitting out container_of() and
    typeof_member() macros.
    
    For time being include new header back to kernel.h to avoid twisted
    indirected includes for existing users.
    
    Note, there are _a lot_ of headers and modules that include kernel.h solely
    for one of these macros and this allows to unburden compiler for the twisted
    inclusion paths and to make new code cleaner in the future.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021
  7. kernel.h: Drop unneeded <linux/kernel.h> inclusion from other headers

    There is no evidence we need kernel.h inclusion in certain headers.
    Drop unneeded <linux/kernel.h> inclusion from other headers.
    
    Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    andy-shev authored and intel-lab-lkp committed Oct 13, 2021

Commits on Oct 7, 2021

  1. futex2: Documentation: Document sys_futex_waitv() uAPI

    Create userspace documentation for futex_waitv() syscall, detailing how
    the arguments are used.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-23-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  2. selftests: futex: Test sys_futex_waitv() wouldblock

    Test if futex_waitv() returns -EWOULDBLOCK correctly when the expected
    value is different from the actual value for a waiter.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-22-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  3. selftests: futex: Test sys_futex_waitv() timeout

    Test if the futex_waitv timeout is working as expected, using the
    supported clockid options.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-21-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  4. selftests: futex: Add sys_futex_waitv() test

    Create a new file to test the waitv mechanism. Test both private and
    shared futexes. Wake the last futex in the array, and check if the
    return value from futex_waitv() is the right index.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-20-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  5. futex,arm: Wire up sys_futex_waitv()

    Wire up syscall entry point for ARM architectures, for both 32 and 64-bit.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-19-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  6. futex,x86: Wire up sys_futex_waitv()

    Wire up syscall entry point for x86 arch, for both i386 and x86_64.
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-18-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  7. futex: Implement sys_futex_waitv()

    Add support to wait on multiple futexes. This is the interface
    implemented by this syscall:
    
    futex_waitv(struct futex_waitv *waiters, unsigned int nr_futexes,
    	    unsigned int flags, struct timespec *timeout, clockid_t clockid)
    
    struct futex_waitv {
    	__u64 val;
    	__u64 uaddr;
    	__u32 flags;
    	__u32 __reserved;
    };
    
    Given an array of struct futex_waitv, wait on each uaddr. The thread
    wakes if a futex_wake() is performed at any uaddr. The syscall returns
    immediately if any waiter has *uaddr != val. *timeout is an optional
    absolute timeout value for the operation. This syscall supports only
    64bit sized timeout structs. The flags argument of the syscall should be
    empty, but it can be used for future extensions. Flags for shared
    futexes, sizes, etc. should be used on the individual flags of each
    waiter.
    
    __reserved is used for explicit padding and should be 0, but it might be
    used for future extensions. If the userspace uses 32-bit pointers, it
    should make sure to explicitly cast it when assigning to waitv::uaddr.
    
    Returns the array index of one of the woken futexes. There’s no given
    information of how many were woken, or any particular attribute of it
    (if it’s the first woken, if it is of the smaller index...).
    
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lore.kernel.org/r/20210923171111.300673-17-andrealmeid@collabora.com
    andrealmeid authored and Peter Zijlstra committed Oct 7, 2021
  8. futex: Simplify double_lock_hb()

    We need to make sure that all requeue operations take the hash bucket
    locks in the same order to avoid deadlock. Simplify the current
    double_lock_hb implementation by making sure hb1 is always the
    "smallest" bucket to avoid extra checks.
    
    [André: Add commit description]
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-16-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  9. futex: Split out wait/wake

    Move the wait/wake bits into their own file.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-15-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  10. futex: Split out requeue

    Move all the requeue bits into their own file.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-14-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  11. futex: Rename mark_wake_futex()

    In order to prepare introducing these symbols into the global
    namespace; rename:
    
      s/mark_wake_futex/futex_wake_mark/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-13-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  12. futex: Rename: match_futex()

    In order to prepare introducing these symbols into the global
    namespace; rename:
    
      s/match_futex/futex_match/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-12-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  13. futex: Rename: hb_waiter_{inc,dec,pending}()

    In order to prepare introducing these symbols into the global
    namespace; rename them:
    
      s/hb_waiters_/futex_&/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-11-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  14. futex: Split out PI futex

    Move the PI futex implementation into it's own file.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-10-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  15. futex: Rename: {get,cmpxchg}_futex_value_locked()

    In order to prepare introducing these symbols into the global
    namespace; rename them:
    
     s/\<\([^_ ]*\)_futex_value_locked/futex_\1_value_locked/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-9-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  16. futex: Rename hash_futex()

    In order to prepare introducing these symbols into the global
    namespace; rename:
    
      s/hash_futex/futex_hash/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-8-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  17. futex: Rename __unqueue_futex()

    In order to prepare introducing these symbols into the global
    namespace; rename:
    
      s/__unqueue_futex/__futex_unqueue/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-7-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  18. futex: Rename: queue_{,un}lock()

    In order to prepare introducing these symbols into the global
    namespace; rename them:
    
      s/queue_\(un\)*lock/futex_q_\1lock/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-6-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  19. futex: Rename futex_wait_queue_me()

    In order to prepare introducing these symbols into the global
    namespace; rename them:
    
      s/futex_wait_queue_me/futex_wait_queue/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-5-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  20. futex: Rename {,__}{,un}queue_me()

    In order to prepare introducing these symbols into the global
    namespace; rename them:
    
      s/\<\(__\)*\(un\)*queue_me/\1futex_\2queue/g
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-4-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  21. futex: Split out syscalls

    Put the syscalls in their own little file.
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-3-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  22. futex: Move to kernel/futex/

    In preparation for splitup..
    
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Suggested-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: André Almeida <andrealmeid@collabora.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: André Almeida <andrealmeid@collabora.com>
    Link: https://lore.kernel.org/r/20210923171111.300673-2-andrealmeid@collabora.com
    Peter Zijlstra committed Oct 7, 2021
  23. locking/rwbase: Optimize rwbase_read_trylock

    Instead of a full barrier around the Rmw insn, micro-optimize
    for weakly ordered archs such that we only provide the required
    ACQUIRE semantics when taking the read lock.
    
    Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Acked-by: Waiman Long <longman@redhat.com>
    Link: https://lkml.kernel.org/r/20210920052031.54220-2-dave@stgolabs.net
    Davidlohr Bueso authored and Peter Zijlstra committed Oct 7, 2021
  24. Merge branch 'tip/locking/urgent'

    Pull in dependencies.
    Peter Zijlstra committed Oct 7, 2021

Commits on Oct 1, 2021

  1. rtmutex: Wake up the waiters lockless while dropping the read lock.

    The rw_semaphore and rwlock_t implementation both wake the waiter while
    holding the rt_mutex_base::wait_lock acquired.
    This can be optimized by waking the waiter lockless outside of the
    locked section to avoid a needless contention on the
    rt_mutex_base::wait_lock lock.
    
    Extend rt_mutex_wake_q_add() to also accept task and state and use it in
    __rwbase_read_unlock().
    
    Suggested-by: Davidlohr Bueso <dave@stgolabs.net>
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210928150006.597310-3-bigeasy@linutronix.de
    Thomas Gleixner authored and Peter Zijlstra committed Oct 1, 2021
  2. rtmutex: Check explicit for TASK_RTLOCK_WAIT.

    rt_mutex_wake_q_add() needs to  need to distiguish between sleeping
    locks (TASK_RTLOCK_WAIT) and normal locks which use TASK_NORMAL to use
    the proper wake mechanism.
    
    Instead of checking for != TASK_NORMAL make it more robust and check
    explicit for TASK_RTLOCK_WAIT which is the reason why a different wake
    mechanism is used.
    
    No functional change.
    
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210928150006.597310-2-bigeasy@linutronix.de
    Sebastian Andrzej Siewior authored and Peter Zijlstra committed Oct 1, 2021
  3. locking/rt: Take RCU nesting into account for __might_resched()

    The general rule that rcu_read_lock() held sections cannot voluntary sleep
    does apply even on RT kernels. Though the substitution of spin/rw locks on
    RT enabled kernels has to be exempt from that rule. On !RT a spin_lock()
    can obviously nest inside a RCU read side critical section as the lock
    acquisition is not going to block, but on RT this is not longer the case
    due to the 'sleeping' spinlock substitution.
    
    The RT patches contained a cheap hack to ignore the RCU nesting depth in
    might_sleep() checks, which was a pragmatic but incorrect workaround.
    
    Instead of generally ignoring the RCU nesting depth in __might_sleep() and
    __might_resched() checks, pass the rcu_preempt_depth() via the offsets
    argument to __might_resched() from spin/read/write_lock() which makes the
    checks work correctly even in RCU read side critical sections.
    
    The actual blocking on such a substituted lock within a RCU read side
    critical section is already handled correctly in __schedule() by treating
    it as a "preemption" of the RCU read side critical section.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210923165358.368305497@linutronix.de
    Thomas Gleixner authored and Peter Zijlstra committed Oct 1, 2021
  4. sched: Make cond_resched_lock() variants RT aware

    The __might_resched() checks in the cond_resched_lock() variants use
    PREEMPT_LOCK_OFFSET for preempt count offset checking which takes the
    preemption disable by the spin_lock() which is still held at that point
    into account.
    
    On PREEMPT_RT enabled kernels spin/rw_lock held sections stay preemptible
    which means PREEMPT_LOCK_OFFSET is 0, but that still triggers the
    __might_resched() check because that takes RCU read side nesting into
    account.
    
    On RT enabled kernels spin/read/write_lock() issue rcu_read_lock() to
    resemble the !RT semantics, which means in cond_resched_lock() the might
    resched check will see preempt_count() == 0 and rcu_preempt_depth() == 1.
    
    Introduce PREEMPT_LOCK_SCHED_OFFSET for those might resched checks and map
    them depending on CONFIG_PREEMPT_RT.
    
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Link: https://lkml.kernel.org/r/20210923165358.305969211@linutronix.de
    Thomas Gleixner authored and Peter Zijlstra committed Oct 1, 2021
Older