Thread (140 messages) 140 messages, 21 authors, 2018-12-04

Re: [PATCH 10/17] prmem: documentation

From: Peter Zijlstra <peterz@infradead.org>
Date: 2018-10-31 10:02:51
Also in: linux-doc, linux-integrity, lkml

On Tue, Oct 30, 2018 at 09:41:13PM -0700, Andy Lutomirski wrote:
To clarify some of this thread, I think that the fact that rare_write
uses an mm_struct and alias mappings under the hood should be
completely invisible to users of the API.  No one should ever be
handed a writable pointer to rare_write memory (except perhaps during
bootup or when initializing a large complex data structure that will
be rare_write but isn't yet, e.g. the policy db).
Being able to use pointers would make it far easier to do atomics and
other things though.
For example, there could easily be architectures where having a
writable alias is problematic.
Mostly we'd just have to be careful of cache aliases, alignment should
be able to sort that I think.
If you have multiple pools and one mm_struct per pool, you'll need a
way to find the mm_struct from a given allocation.
Or keep track of it externally. For example by context. If you modify
page-tables you pick the page-table pool, if you modify selinux state,
you pick the selinux pool.
Regardless of how the mm_structs are set up, changing rare_write
memory to normal memory or vice versa will require a global TLB flush
(all ASIDs and global pages) on all CPUs, so having extra mm_structs
doesn't seem to buy much.
The way I understand it, the point is that if you stick page-tables and
selinux state in different pools, a stray write in one will never affect
the other.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help