<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/Documentation/RCU/Design/Requirements/Requirements.html, branch master</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=master</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2019-10-29T09:48:12+00:00</updated>
<entry>
<title>docs: rcu: convert some articles from html to ReST</title>
<updated>2019-10-29T09:48:12+00:00</updated>
<author>
<name>Mauro Carvalho Chehab</name>
<email>mchehab+samsung@kernel.org</email>
</author>
<published>2019-08-01T21:39:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=ccc9971e2147225cb2d25e5543d6757988dd0a1d'/>
<id>urn:sha1:ccc9971e2147225cb2d25e5543d6757988dd0a1d</id>
<content type='text'>
There are 4 RCU articles that are written on html format.

The way they are, they can't be part of the Linux Kernel
documentation body nor share the styles and pdf output.

So, convert them to ReST format.

This way, make htmldocs and make pdfdocs will produce a
documentation output that will be like the original ones, but
will be part of the Linux Kernel documentation body.

Part of the conversion was done with the help of pandoc, but
the result had some broken things that had to be manually
fixed.

Following are manual changes Mauro made when doing the automatic conversion:
Quoting from: https://lore.kernel.org/rcu/20190726154550.5eeae294@coco.lan/

&gt; &gt; At least the pandoc's version I used here has a bug: its conversion
&gt; &gt; from html to ReST on those files only start after a &lt;body&gt; tag - or
&gt; &gt; when the first quiz table starts. I only discovered that adding a
&gt; &gt; &lt;body&gt; at the beginning of the file solve this book at the last
&gt; &gt; conversions.
&gt; &gt;
&gt; &gt; So, for most html-&gt;ReST conversions, I manually converted the first
&gt; &gt; part of the document, basically stripping html paragraph tags and
&gt; &gt; by replacing highlights by the ReST syntax.
&gt; &gt;
&gt; &gt; Also, all the quiz tables seem to assume some javascript macro or
&gt; &gt; css style that would be hiding the answer part until the mouse moves
&gt; &gt; to it. Such macro/css was not there at the kernel tree. So, the quiz
&gt; &gt; answers have the same color as the background, making them invisible.
&gt; &gt; Even if we had such macro/css, this is not portable for pdf/LaTeX output
&gt; &gt; (and I'm not sure if this would work with ePub).
&gt; &gt;
&gt; &gt; So, I ended by manually doing the table conversion.
&gt; &gt;
&gt; &gt; Finally, I double-checked if the conversions ended ok, addressing any
&gt; &gt; issues that might have heppened.
&gt; &gt;
&gt; &gt; So, after both automatic conversion and manual fixes, I opened both the
&gt; &gt; html files produced by Sphinx and the original ones and compared them
&gt; &gt; line per line (except for the indexes, as Sphinx produces them
&gt; &gt; automatically), in order to see if all information from the original
&gt; &gt; files will be there on a format close to what we have on other ReST
&gt; &gt; files, fixing any pending issues if any.

Signed-off-by: Mauro Carvalho Chehab &lt;mchehab+samsung@kernel.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@kernel.org&gt;
</content>
</entry>
<entry>
<title>Revert docs from "treewide: Rename rcu_dereference_raw_notrace() to _check()"</title>
<updated>2019-10-29T09:46:55+00:00</updated>
<author>
<name>Joel Fernandes (Google)</name>
<email>joel@joelfernandes.org</email>
</author>
<published>2019-08-01T21:39:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=c07e6f36bc321d70e8255c30d327e299b8301146'/>
<id>urn:sha1:c07e6f36bc321d70e8255c30d327e299b8301146</id>
<content type='text'>
This reverts docs from commit 355e9972da81e803bbb825b76106ae9b358caf8e.

Signed-off-by: Joel Fernandes (Google) &lt;joel@joelfernandes.org&gt;
[ paulmck: Added Joel's SoB per Stephen Rothwell feedback. ]
[ paulmck: Joel approved via private email. ]
Signed-off-by: Paul E. McKenney &lt;paulmck@kernel.org&gt;
</content>
</entry>
<entry>
<title>Revert docs from "rcu: Restore barrier() to rcu_read_lock() and rcu_read_unlock()"</title>
<updated>2019-10-29T09:43:50+00:00</updated>
<author>
<name>Joel Fernandes (Google)</name>
<email>joel@joelfernandes.org</email>
</author>
<published>2019-08-01T21:39:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=97df75cde57f0a24075200e22d9e2cfb1f2e195b'/>
<id>urn:sha1:97df75cde57f0a24075200e22d9e2cfb1f2e195b</id>
<content type='text'>
This reverts docs from commit d6b9cd7dc8e041ee83cb1362fce59a3cdb1f2709.

Signed-off-by: Joel Fernandes (Google) &lt;joel@joelfernandes.org&gt;
[ paulmck: Added Joel's SoB per Stephen Rothwell feedback. ]
[ paulmck: Joel approved via private email. ]
Signed-off-by: Paul E. McKenney &lt;paulmck@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branches 'consolidate.2019.08.01b', 'fixes.2019.08.12a', 'lists.2019.08.13a' and 'torture.2019.08.01b' into HEAD</title>
<updated>2019-08-13T21:30:30+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.ibm.com</email>
</author>
<published>2019-08-13T21:30:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=31da067023dd0e35c5ec5556f0be7a31e5588277'/>
<id>urn:sha1:31da067023dd0e35c5ec5556f0be7a31e5588277</id>
<content type='text'>
consolidate.2019.08.01b: Further consolidation cleanups
fixes.2019.08.12a: Miscellaneous fixes
lists.2019.08.13a: Optional lockdep arguments for RCU list macros
torture.2019.08.01b: Torture-test updates
</content>
</entry>
<entry>
<title>treewide: Rename rcu_dereference_raw_notrace() to _check()</title>
<updated>2019-08-01T21:16:21+00:00</updated>
<author>
<name>Joel Fernandes (Google)</name>
<email>joel@joelfernandes.org</email>
</author>
<published>2019-07-11T20:45:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=0a5b99f57873e233ad42ef71e23c629f6ea1fcfe'/>
<id>urn:sha1:0a5b99f57873e233ad42ef71e23c629f6ea1fcfe</id>
<content type='text'>
The rcu_dereference_raw_notrace() API name is confusing.  It is equivalent
to rcu_dereference_raw() except that it also does sparse pointer checking.

There are only a few users of rcu_dereference_raw_notrace(). This patches
renames all of them to be rcu_dereference_raw_check() with the "_check()"
indicating sparse checking.

Signed-off-by: Joel Fernandes (Google) &lt;joel@joelfernandes.org&gt;
[ paulmck: Fix checkpatch warnings about parentheses. ]
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>rcu: Restore barrier() to rcu_read_lock() and rcu_read_unlock()</title>
<updated>2019-08-01T21:05:51+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.ibm.com</email>
</author>
<published>2019-06-04T21:05:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=1f3ebc8253ee56bfaa883c5114fb5569c56f6197'/>
<id>urn:sha1:1f3ebc8253ee56bfaa883c5114fb5569c56f6197</id>
<content type='text'>
Commit bb73c52bad36 ("rcu: Don't disable preemption for Tiny and Tree
RCU readers") removed the barrier() calls from rcu_read_lock() and
rcu_write_lock() in CONFIG_PREEMPT=n&amp;&amp;CONFIG_PREEMPT_COUNT=n kernels.
Within RCU, this commit was OK, but it failed to account for things like
get_user() that can pagefault and that can be reordered by the compiler.
Lack of the barrier() calls in rcu_read_lock() and rcu_read_unlock()
can cause these page faults to migrate into RCU read-side critical
sections, which in CONFIG_PREEMPT=n kernels could result in too-short
grace periods and arbitrary misbehavior.  Please see commit 386afc91144b
("spinlocks and preemption points need to be at least compiler barriers")
and Linus's commit 66be4e66a7f4 ("rcu: locking and unlocking need to
always be at least barriers"), this last of which restores the barrier()
call to both rcu_read_lock() and rcu_read_unlock().

This commit removes barrier() calls that are no longer needed given that
the addition of them in Linus's commit noted above.  The combination of
this commit and Linus's commit effectively reverts commit bb73c52bad36
("rcu: Don't disable preemption for Tiny and Tree RCU readers").

Reported-by: Herbert Xu &lt;herbert@gondor.apana.org.au&gt;
Reported-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
[ paulmck: Fix embarrassing typo located by Alan Stern. ]
</content>
</entry>
<entry>
<title>doc: CPU-hotplug notifiers cannot invoke synchronize_srcu() or srcu_barrier()</title>
<updated>2019-01-25T23:34:18+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.ibm.com</email>
</author>
<published>2018-12-11T16:28:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=6efebf84997b26a6264eaeacf05eb6f5de2772b7'/>
<id>urn:sha1:6efebf84997b26a6264eaeacf05eb6f5de2772b7</id>
<content type='text'>
SRCU's synchronize_srcu() may not be invoked from CPU-hotplug notifiers,
due to the fact that SRCU grace periods make use of timers and the
possibility of timers being temporarily stranded on the outgoing CPU.
This stranding of timers means that timers posted to the outgoing CPU
will not fire until late in the CPU-hotplug process.  The problem is
that if a notifier is waiting on an SRCU grace period, that grace period
is waiting on a timer, and that timer is stranded on the outgoing CPU,
then the notifier will never be awakened, in other words, deadlock has
occurred.  This same situation of course also prohibits srcu_barrier()
from being invoked from CPU-hotplug notifiers.

This commit therefore updates the requirements to include this restriction.

Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>doc: RCU scheduler spinlock rcu_read_unlock() restriction remains</title>
<updated>2018-11-12T16:56:25+00:00</updated>
<author>
<name>Paul E. McKenney</name>
<email>paulmck@linux.ibm.com</email>
</author>
<published>2018-10-15T17:54:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=97562c018135a9d01c59bd3bf95a9458548b79e2'/>
<id>urn:sha1:97562c018135a9d01c59bd3bf95a9458548b79e2</id>
<content type='text'>
Given RCU flavor consolidation, when rcu_read_unlock() is invoked with
interrupts disabled, the reporting of the corresponding quiescent state is
deferred until interrupts are re-enabled.  There was therefore some hope
that this would allow dropping the restriction against holding scheduler
spinlocks across an rcu_read_unlock() without disabling interrupts across
the entire corresponding RCU read-side critical section.  Unfortunately,
the need to quickly provide a quiescent state to expedited grace periods
sometimes requires a call to raise_softirq() during rcu_read_unlock()
execution.  Because raise_softirq() can sometimes acquire the scheduler
spinlocks, the restriction must remain in effect.  This commit therefore
updates the RCU requirements documentation accordingly.

Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>doc: Make listing in RCU perf/scale requirements use rcu_assign_pointer()</title>
<updated>2018-11-12T16:56:25+00:00</updated>
<author>
<name>Joel Fernandes (Google)</name>
<email>joel@joelfernandes.org</email>
</author>
<published>2018-10-15T02:29:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=97949f0176da396c32e7c881cbfbc61642fb1266'/>
<id>urn:sha1:97949f0176da396c32e7c881cbfbc61642fb1266</id>
<content type='text'>
The code listing under this section has a quick quiz that says line
19 uses rcu_access_pointer, but the code listing itself instead uses
rcu_dereference().  This commit therefore makes the code listing match
the quick quiz.

Signed-off-by: Joel Fernandes (Google) &lt;joel@joelfernandes.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
</content>
</entry>
<entry>
<title>doc: Remove obsolete (non-)requirement about disabling preemption</title>
<updated>2018-11-12T16:56:25+00:00</updated>
<author>
<name>Joel Fernandes (Google)</name>
<email>joel@joelfernandes.org</email>
</author>
<published>2018-10-14T21:29:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=8b9df28d7f2e50dc1be758e98dad61ec77d6f6b5'/>
<id>urn:sha1:8b9df28d7f2e50dc1be758e98dad61ec77d6f6b5</id>
<content type='text'>
The Requirements.html document says "Disabling Preemption Does
Not Block Grace Periods".  However this is no longer true with
the RCU consolidation.  This commit therefore removes the obsolete
(non-)requirement entirely.

Signed-off-by: Joel Fernandes (Google) &lt;joel@joelfernandes.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.ibm.com&gt;
</content>
</entry>
</feed>
