<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/source/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in dec_unless_positive</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>cdd5b5a9761fd66d17586e4f4ba6588c70e640ea - Merge branch &apos;next&apos; into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#cdd5b5a9761fd66d17586e4f4ba6588c70e640ea</link>
        <description>Merge branch &apos;next&apos; into for-linusPrepare input updates for 6.7 merge window.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Tue, 07 Nov 2023 00:42:08 +0100</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>34069d12e239ae8f36dd96c378e4622fb1c42a76 - Merge tag &apos;v6.5&apos; into next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#34069d12e239ae8f36dd96c378e4622fb1c42a76</link>
        <description>Merge tag &apos;v6.5&apos; into nextSync up with mainline to bring in updates to the shared infrastructure.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Tue, 05 Sep 2023 23:08:14 +0200</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>2612e3bbc0386368a850140a6c9b990cd496a5ec - Merge drm/drm-next into drm-intel-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#2612e3bbc0386368a850140a6c9b990cd496a5ec</link>
        <description>Merge drm/drm-next into drm-intel-nextCatching-up with drm-next and drm-intel-gt-next.It will unblock a code refactor around the platformdefinitions (names vs acronyms).Signed-off-by: Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 07 Aug 2023 23:14:42 +0200</pubDate>
        <dc:creator>Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>9f771739a04919226081a107167596de75108fbb - Merge drm/drm-next into drm-intel-gt-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#9f771739a04919226081a107167596de75108fbb</link>
        <description>Merge drm/drm-next into drm-intel-gt-nextNeed to pull in b3e4aae612ec (&quot;drm/i915/hdcp: Modify hdcp_gsc_message msg sending mechanism&quot;) asa dependency for https://patchwork.freedesktop.org/series/121735/Signed-off-by: Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 07 Aug 2023 12:29:40 +0200</pubDate>
        <dc:creator>Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;</dc:creator>
    </item>
<item>
        <title>61b7369483efb5e0a9f3b48e75fac00d46d661e0 - Merge drm/drm-next into drm-misc-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#61b7369483efb5e0a9f3b48e75fac00d46d661e0</link>
        <description>Merge drm/drm-next into drm-misc-nextBackmerging to get v6.5-rc2.Signed-off-by: Thomas Zimmermann &lt;tzimmermann@suse.de&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 24 Jul 2023 15:44:47 +0200</pubDate>
        <dc:creator>Thomas Zimmermann &lt;tzimmermann@suse.de&gt;</dc:creator>
    </item>
<item>
        <title>0791faebfe750292a8a842b64795a390ca4a3b51 - ASoC: Merge v6.5-rc2</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#0791faebfe750292a8a842b64795a390ca4a3b51</link>
        <description>ASoC: Merge v6.5-rc2Get a similar baseline to my other branches, and fixes for people usingthe branch.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 17 Jul 2023 07:12:31 +0200</pubDate>
        <dc:creator>Mark Brown &lt;broonie@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>2f98e686ef59b5d19af5847d755798e2031bee3a - Merge v6.5-rc1 into drm-misc-fixes</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#2f98e686ef59b5d19af5847d755798e2031bee3a</link>
        <description>Merge v6.5-rc1 into drm-misc-fixesBoris needs 6.5-rc1 in drm-misc-fixes to prevent a conflict.Signed-off-by: Maxime Ripard &lt;mripard@kernel.org&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Tue, 11 Jul 2023 09:23:20 +0200</pubDate>
        <dc:creator>Maxime Ripard &lt;mripard@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>44f10dbefd5e41b3385af91f855a57aa2afaf40e - Merge branch &apos;master&apos; into mm-hotfixes-stable</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#44f10dbefd5e41b3385af91f855a57aa2afaf40e</link>
        <description>Merge branch &apos;master&apos; into mm-hotfixes-stable

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Fri, 30 Jun 2023 17:41:39 +0200</pubDate>
        <dc:creator>Andrew Morton &lt;akpm@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>bc6cb4d5bc3a44197de30784eae71d8ba28483eb - Merge tag &apos;locking-core-2023-06-27&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#bc6cb4d5bc3a44197de30784eae71d8ba28483eb</link>
        <description>Merge tag &apos;locking-core-2023-06-27&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tipPull locking updates from Ingo Molnar: - Introduce cmpxchg128() -- aka. the demise of cmpxchg_double()   The cmpxchg128() family of functions is basically &amp; functionally the   same as cmpxchg_double(), but with a saner interface.   Instead of a 6-parameter horror that forced u128 - u64/u64-halves   layout details on the interface and exposed users to complexity,   fragility &amp; bugs, use a natural 3-parameter interface with u128   types. - Restructure the generated atomic headers, and add kerneldoc comments   for all of the generic atomic{,64,_long}_t operations.   The generated definitions are much cleaner now, and come with   documentation. - Implement lock_set_cmp_fn() on lockdep, for defining an ordering when   taking multiple locks of the same type.   This gets rid of one use of lockdep_set_novalidate_class() in the   bcache code. - Fix raw_cpu_generic_try_cmpxchg() bug due to an unintended variable   shadowing generating garbage code on Clang on certain ARM builds.* tag &apos;locking-core-2023-06-27&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (43 commits)  locking/atomic: scripts: fix ${atomic}_dec_if_positive() kerneldoc  percpu: Fix self-assignment of __old in raw_cpu_generic_try_cmpxchg()  locking/atomic: treewide: delete arch_atomic_*() kerneldoc  locking/atomic: docs: Add atomic operations to the driver basic API documentation  locking/atomic: scripts: generate kerneldoc comments  docs: scripts: kernel-doc: accept bitwise negation like ~@var  locking/atomic: scripts: simplify raw_atomic*() definitions  locking/atomic: scripts: simplify raw_atomic_long*() definitions  locking/atomic: scripts: split pfx/name/sfx/order  locking/atomic: scripts: restructure fallback ifdeffery  locking/atomic: scripts: build raw_atomic_long*() directly  locking/atomic: treewide: use raw_atomic*_&lt;op&gt;()  locking/atomic: scripts: add trivial raw_atomic*_&lt;op&gt;()  locking/atomic: scripts: factor out order template generation  locking/atomic: scripts: remove leftover &quot;${mult}&quot;  locking/atomic: scripts: remove bogus order parameter  locking/atomic: xtensa: add preprocessor symbols  locking/atomic: x86: add preprocessor symbols  locking/atomic: sparc: add preprocessor symbols  locking/atomic: sh: add preprocessor symbols  ...

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Tue, 27 Jun 2023 23:14:30 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
<item>
        <title>1d78814d41701c216e28fcf2656526146dec4a1a - locking/atomic: scripts: simplify raw_atomic*() definitions</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#1d78814d41701c216e28fcf2656526146dec4a1a</link>
        <description>locking/atomic: scripts: simplify raw_atomic*() definitionsCurrently each ordering variant has several potential definitions,with a mixture of preprocessor and C definitions, including severalcopies of its C prototype, e.g.| #if defined(arch_atomic_fetch_andnot_acquire)| #define raw_atomic_fetch_andnot_acquire arch_atomic_fetch_andnot_acquire| #elif defined(arch_atomic_fetch_andnot_relaxed)| static __always_inline int| raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)| {|       int ret = arch_atomic_fetch_andnot_relaxed(i, v);|       __atomic_acquire_fence();|       return ret;| }| #elif defined(arch_atomic_fetch_andnot)| #define raw_atomic_fetch_andnot_acquire arch_atomic_fetch_andnot| #else| static __always_inline int| raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)| {|       return raw_atomic_fetch_and_acquire(~i, v);| }| #endifMake this a bit simpler by defining the C prototype once, and writingthe various potential definitions as plain C code guarded by ifdeffery.For example, the above becomes:| static __always_inline int| raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)| {| #if defined(arch_atomic_fetch_andnot_acquire)|         return arch_atomic_fetch_andnot_acquire(i, v);| #elif defined(arch_atomic_fetch_andnot_relaxed)|         int ret = arch_atomic_fetch_andnot_relaxed(i, v);|         __atomic_acquire_fence();|         return ret;| #elif defined(arch_atomic_fetch_andnot)|         return arch_atomic_fetch_andnot(i, v);| #else|         return raw_atomic_fetch_and_acquire(~i, v);| #endif| }Which is far easier to read. As we now always have a single copy of theC prototype wrapping all the potential definitions, we now have anobvious single location for kerneldoc comments.At the same time, the fallbacks for raw_atomic*_xhcg() are made to use&apos;new&apos; rather than &apos;i&apos; as the name of the new value. This is what theexisting fallback template used, and is more consistent with theraw_atomic{_try,}cmpxchg() fallbacks.There should be no functional change as a result of this patch.Signed-off-by: Mark Rutland &lt;mark.rutland@arm.com&gt;Signed-off-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;Reviewed-by: Kees Cook &lt;keescook@chromium.org&gt;Link: https://lore.kernel.org/r/20230605070124.3741859-24-mark.rutland@arm.com

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 05 Jun 2023 09:01:20 +0200</pubDate>
        <dc:creator>Mark Rutland &lt;mark.rutland@arm.com&gt;</dc:creator>
    </item>
<item>
        <title>9257959a6e5b4fca6fc8e985790bff62c2046f20 - locking/atomic: scripts: restructure fallback ifdeffery</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#9257959a6e5b4fca6fc8e985790bff62c2046f20</link>
        <description>locking/atomic: scripts: restructure fallback ifdefferyCurrently the various ordering variants of an atomic operation aredefined in groups of full/acquire/release/relaxed ordering variants withsome shared ifdeffery and several potential definitions of each orderingvariant in different branches of the shared ifdeffery.As an ordering variant can have several potential definitions downdifferent branches of the shared ifdeffery, it can be painful for ahuman to find a relevant definition, and we don&apos;t have a good locationto place anything common to all definitions of an ordering variant (e.g.kerneldoc).Historically the grouping of full/acquire/release/relaxed orderingvariants was necessary as we filled in the missing atomics in the samenamespace as the architecture used. It would be easy to accidentallydefine one ordering fallback in terms of another ordering fallback withredundant barriers, and avoiding that would otherwise require a lot ofbaroque ifdeffery.With recent changes we no longer need to fill in the missing atomics inthe arch_atomic*_&lt;op&gt;() namespace, and only need to fill in theraw_atomic*_&lt;op&gt;() namespace. Due to this, there&apos;s no risk of anamespace collision, and we can define each raw_atomic*_&lt;op&gt; orderingvariant with its own ifdeffery checking for the arch_atomic*_&lt;op&gt;ordering variants.Restructure the fallbacks in this way, with each ordering variant havingits own ifdeffery of the form:| #if defined(arch_atomic_fetch_andnot_acquire)| #define raw_atomic_fetch_andnot_acquire arch_atomic_fetch_andnot_acquire| #elif defined(arch_atomic_fetch_andnot_relaxed)| static __always_inline int| raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)| {| 	int ret = arch_atomic_fetch_andnot_relaxed(i, v);| 	__atomic_acquire_fence();| 	return ret;| }| #elif defined(arch_atomic_fetch_andnot)| #define raw_atomic_fetch_andnot_acquire arch_atomic_fetch_andnot| #else| static __always_inline int| raw_atomic_fetch_andnot_acquire(int i, atomic_t *v)| {| 	return raw_atomic_fetch_and_acquire(~i, v);| }| #endifNote that where there&apos;s no relevant arch_atomic*_&lt;op&gt;() orderingvariant, we&apos;ll define the operation in terms of a distinctraw_atomic*_&lt;otherop&gt;(), as this itself might have been filled in with afallback.As we now generate the raw_atomic*_&lt;op&gt;() implementations directly, weno longer need the trivial wrappers, so they are removed.This makes the ifdeffery easier to follow, and will allow for furtherimprovements in subsequent patches.There should be no functional change as a result of this patch.Signed-off-by: Mark Rutland &lt;mark.rutland@arm.com&gt;Signed-off-by: Peter Zijlstra (Intel) &lt;peterz@infradead.org&gt;Reviewed-by: Kees Cook &lt;keescook@chromium.org&gt;Link: https://lore.kernel.org/r/20230605070124.3741859-21-mark.rutland@arm.com

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 05 Jun 2023 09:01:17 +0200</pubDate>
        <dc:creator>Mark Rutland &lt;mark.rutland@arm.com&gt;</dc:creator>
    </item>
<item>
        <title>762f99f4f3cb41a775b5157dd761217beba65873 - Merge branch &apos;next&apos; into for-linus</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#762f99f4f3cb41a775b5157dd761217beba65873</link>
        <description>Merge branch &apos;next&apos; into for-linusPrepare input updates for 5.17 merge window.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Sat, 15 Jan 2022 21:09:44 +0100</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>8632987380765dee716d460640aa58d58d52998e - Merge branch &apos;reset/of-get-optional-exclusive&apos; of git://git.pengutronix.de/pza/linux into timers/drivers/next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#8632987380765dee716d460640aa58d58d52998e</link>
        <description>Merge branch &apos;reset/of-get-optional-exclusive&apos; of git://git.pengutronix.de/pza/linux into timers/drivers/next&quot;Add optional variant of of_reset_control_get_exclusive(). If therequested reset is not specified in the device tree, this functionreturns NULL instead of an error.&quot;This dependency is needed for the Generic Timer Module (a.k.a OSTM)support for RZ/G2L.Signed-off-by: Daniel Lezcano &lt;daniel.lezcano@linaro.org&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Thu, 09 Dec 2021 13:57:57 +0100</pubDate>
        <dc:creator>Daniel Lezcano &lt;daniel.lezcano@linaro.org&gt;</dc:creator>
    </item>
<item>
        <title>5d8dfaa71d87f742c53309b95cb6a8b274119027 - Merge tag &apos;v5.15&apos; into next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#5d8dfaa71d87f742c53309b95cb6a8b274119027</link>
        <description>Merge tag &apos;v5.15&apos; into nextSync up with the mainline to get the latest APIs and DT bindings.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Thu, 09 Dec 2021 08:43:50 +0100</pubDate>
        <dc:creator>Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>e700ac213a0f793fb4f83098413303e3dd080892 - Merge branch &apos;pruss-fix&apos; into fixes</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#e700ac213a0f793fb4f83098413303e3dd080892</link>
        <description>Merge branch &apos;pruss-fix&apos; into fixesMerge in a fix for pruss reset issue caused by enabling pruss for am335x.

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Wed, 06 Oct 2021 06:55:44 +0200</pubDate>
        <dc:creator>Tony Lindgren &lt;tony@atomide.com&gt;</dc:creator>
    </item>
<item>
        <title>ffb1e76f4f32d2b8ea4189df0484980370476395 - Merge tag &apos;v5.15-rc2&apos; into spi-5.15</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#ffb1e76f4f32d2b8ea4189df0484980370476395</link>
        <description>Merge tag &apos;v5.15-rc2&apos; into spi-5.15Linux 5.15-rc2

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 20 Sep 2021 16:56:58 +0200</pubDate>
        <dc:creator>Mark Brown &lt;broonie@kernel.org&gt;</dc:creator>
    </item>
<item>
        <title>d1b803f4ca4f25d6f171219d039f9410a10b29ee - Merge drm/drm-next into drm-intel-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#d1b803f4ca4f25d6f171219d039f9410a10b29ee</link>
        <description>Merge drm/drm-next into drm-intel-nextCatch-up on 5.15-rc1 and sync with drm-intel-gt-nextto prepare the PXP topic branch.Signed-off-by: Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Wed, 15 Sep 2021 16:12:51 +0200</pubDate>
        <dc:creator>Rodrigo Vivi &lt;rodrigo.vivi@intel.com&gt;</dc:creator>
    </item>
<item>
        <title>d5dd580deb54483cce0cb5bbe3f1a132a28c767d - Merge drm/drm-next into drm-intel-gt-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#d5dd580deb54483cce0cb5bbe3f1a132a28c767d</link>
        <description>Merge drm/drm-next into drm-intel-gt-nextClose the divergence which has caused patches not to apply andhave a solid baseline for the PXP patches that Rodrigo will senda topic branch PR for.Signed-off-by: Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Wed, 15 Sep 2021 12:23:27 +0200</pubDate>
        <dc:creator>Joonas Lahtinen &lt;joonas.lahtinen@linux.intel.com&gt;</dc:creator>
    </item>
<item>
        <title>2f76520561d01a5f37e6d6ed2c2e441b6a355a96 - Merge drm/drm-next into drm-misc-next</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#2f76520561d01a5f37e6d6ed2c2e441b6a355a96</link>
        <description>Merge drm/drm-next into drm-misc-nextKickstart new drm-misc-next cycle.Signed-off-by: Maxime Ripard &lt;maxime@cerno.tech&gt;

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Tue, 14 Sep 2021 09:25:30 +0200</pubDate>
        <dc:creator>Maxime Ripard &lt;maxime@cerno.tech&gt;</dc:creator>
    </item>
<item>
        <title>e5e726f7bb9f711102edea7e5bd511835640e3b4 - Merge tag &apos;locking-core-2021-08-30&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip</title>
        <link>http://kernelsources.org:8080/source/history/linux/scripts/atomic/fallbacks/dec_unless_positive#e5e726f7bb9f711102edea7e5bd511835640e3b4</link>
        <description>Merge tag &apos;locking-core-2021-08-30&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tipPull locking and atomics updates from Thomas Gleixner: &quot;The regular pile:   - A few improvements to the mutex code   - Documentation updates for atomics to clarify the difference between     cmpxchg() and try_cmpxchg() and to explain the forward progress     expectations.   - Simplification of the atomics fallback generator   - The addition of arch_atomic_long*() variants and generic arch_*()     bitops based on them.   - Add the missing might_sleep() invocations to the down*() operations     of semaphores.  The PREEMPT_RT locking core:   - Scheduler updates to support the state preserving mechanism for     &apos;sleeping&apos; spin- and rwlocks on RT.     This mechanism is carefully preserving the state of the task when     blocking on a &apos;sleeping&apos; spin- or rwlock and takes regular wake-ups     targeted at the same task into account. The preserved or updated     (via a regular wakeup) state is restored when the lock has been     acquired.   - Restructuring of the rtmutex code so it can be utilized and     extended for the RT specific lock variants.   - Restructuring of the ww_mutex code to allow sharing of the ww_mutex     specific functionality for rtmutex based ww_mutexes.   - Header file disentangling to allow substitution of the regular lock     implementations with the PREEMPT_RT variants without creating an     unmaintainable #ifdef mess.   - Shared base code for the PREEMPT_RT specific rw_semaphore and     rwlock implementations.     Contrary to the regular rw_semaphores and rwlocks the PREEMPT_RT     implementation is writer unfair because it is infeasible to do     priority inheritance on multiple readers. Experience over the years     has shown that real-time workloads are not the typical workloads     which are sensitive to writer starvation.     The alternative solution would be to allow only a single reader     which has been tried and discarded as it is a major bottleneck     especially for mmap_sem. Aside of that many of the writer     starvation critical usage sites have been converted to a writer     side mutex/spinlock and RCU read side protections in the past     decade so that the issue is less prominent than it used to be.   - The actual rtmutex based lock substitutions for PREEMPT_RT enabled     kernels which affect mutex, ww_mutex, rw_semaphore, spinlock_t and     rwlock_t. The spin/rw_lock*() functions disable migration across     the critical section to preserve the existing semantics vs per-CPU     variables.   - Rework of the futex REQUEUE_PI mechanism to handle the case of     early wake-ups which interleave with a re-queue operation to     prevent the situation that a task would be blocked on both the     rtmutex associated to the outer futex and the rtmutex based hash     bucket spinlock.     While this situation cannot happen on !RT enabled kernels the     changes make the underlying concurrency problems easier to     understand in general. As a result the difference between !RT and     RT kernels is reduced to the handling of waiting for the critical     section. !RT kernels simply spin-wait as before and RT kernels     utilize rcu_wait().   - The substitution of local_lock for PREEMPT_RT with a spinlock which     protects the critical section while staying preemptible. The CPU     locality is established by disabling migration.  The underlying concepts of this code have been in use in PREEMPT_RT for  way more than a decade. The code has been refactored several times over  the years and this final incarnation has been optimized once again to be  as non-intrusive as possible, i.e. the RT specific parts are mostly  isolated.  It has been extensively tested in the 5.14-rt patch series and it has  been verified that !RT kernels are not affected by these changes&quot;* tag &apos;locking-core-2021-08-30&apos; of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (92 commits)  locking/rtmutex: Return success on deadlock for ww_mutex waiters  locking/rtmutex: Prevent spurious EDEADLK return caused by ww_mutexes  locking/rtmutex: Dequeue waiter on ww_mutex deadlock  locking/rtmutex: Dont dereference waiter lockless  locking/semaphore: Add might_sleep() to down_*() family  locking/ww_mutex: Initialize waiter.ww_ctx properly  static_call: Update API documentation  locking/local_lock: Add PREEMPT_RT support  locking/spinlock/rt: Prepare for RT local_lock  locking/rtmutex: Add adaptive spinwait mechanism  locking/rtmutex: Implement equal priority lock stealing  preempt: Adjust PREEMPT_LOCK_OFFSET for RT  locking/rtmutex: Prevent lockdep false positive with PI futexes  futex: Prevent requeue_pi() lock nesting issue on RT  futex: Simplify handle_early_requeue_pi_wakeup()  futex: Reorder sanity checks in futex_requeue()  futex: Clarify comment in futex_requeue()  futex: Restructure futex_requeue()  futex: Correct the number of requeued waiters for PI  futex: Remove bogus condition for requeue PI  ...

            List of files:
            /linux/scripts/atomic/fallbacks/dec_unless_positive</description>
        <pubDate>Mon, 30 Aug 2021 23:26:36 +0200</pubDate>
        <dc:creator>Linus Torvalds &lt;torvalds@linux-foundation.org&gt;</dc:creator>
    </item>
</channel>
</rss>
