TWx Linux Repository
Go to file
Manfred Spraul c5b2cbdbda ipc/mqueue.c: update/document memory barriers
Update and document memory barriers for mqueue.c:

- ewp->state is read without any locks, thus READ_ONCE is required.

- add smp_aquire__after_ctrl_dep() after the READ_ONCE, we need
  acquire semantics if the value is STATE_READY.

- use wake_q_add_safe()

- document why __set_current_state() may be used:
  Reading task->state cannot happen before the wake_q_add() call,
  which happens while holding info->lock. Thus the spin_unlock()
  is the RELEASE, and the spin_lock() is the ACQUIRE.

For completeness: there is also a 3 CPU scenario, if the to be woken
up task is already on another wake_q.
Then:
- CPU1: spin_unlock() of the task that goes to sleep is the RELEASE
- CPU2: the spin_lock() of the waker is the ACQUIRE
- CPU2: smp_mb__before_atomic inside wake_q_add() is the RELEASE
- CPU3: smp_mb__after_spinlock() inside try_to_wake_up() is the ACQUIRE

Link: http://lkml.kernel.org/r/20191020123305.14715-4-manfred@colorfullife.com
Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
Reviewed-by: Davidlohr Bueso <dbueso@suse.de>
Cc: Waiman Long <longman@redhat.com>
Cc: <1vier1@web.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2020-02-04 03:05:23 +00:00
arch kgdb patches for 5.6-rc1 2020-02-03 16:59:51 +00:00
block
certs
crypto
Documentation smp_mb__{before,after}_atomic(): update Documentation 2020-02-04 03:05:23 +00:00
drivers mm/memory_hotplug: drop valid_start/valid_end from test_pages_in_a_zone() 2020-02-04 03:05:23 +00:00
fs fs/proc/page.c: allow inspection of last section and fix end detection 2020-02-04 03:05:23 +00:00
include mm/memory_hotplug: drop valid_start/valid_end from test_pages_in_a_zone() 2020-02-04 03:05:23 +00:00
init init/main.c: fix misleading "This architecture does not have kernel memory protection" message 2020-01-31 10:30:41 -08:00
ipc ipc/mqueue.c: update/document memory barriers 2020-02-04 03:05:23 +00:00
kernel kgdb patches for 5.6-rc1 2020-02-03 16:59:51 +00:00
lib kcov: ignore fault-inject and stacktrace 2020-01-31 10:30:41 -08:00
LICENSES
mm mm/memory_hotplug: drop valid_start/valid_end from test_pages_in_a_zone() 2020-02-04 03:05:23 +00:00
net Merge branch 'akpm' (patches from Andrew) 2020-01-31 12:16:36 -08:00
samples drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
scripts Kconfig updates for v5.6 2020-02-01 10:25:55 -08:00
security
sound
tools - Most of the commits here are work to enable host-initiated hibernation 2020-02-03 14:42:03 +00:00
usr initramfs: do not show compression mode choice if INITRAMFS_SOURCE is empty 2020-02-03 17:31:43 +00:00
virt Merge branch 'cve-2019-3016' into kvm-next-5.6 2020-01-30 18:47:59 +01:00
.clang-format
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap pci-v5.6-changes 2020-01-31 14:48:54 -08:00
COPYING
CREDITS
Kbuild
Kconfig
MAINTAINERS pci-v5.6-changes 2020-01-31 14:48:54 -08:00
Makefile Kbuild updates for v5.6 2020-02-01 10:01:52 -08:00
README

Linux kernel
============

There are several guides for kernel developers and users. These guides can
be rendered in a number of formats, like HTML and PDF. Please read
Documentation/admin-guide/README.rst first.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.  The formatted documentation can also be read online at:

    https://www.kernel.org/doc/html/latest/

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.