> On Oct 31, 2018, at 2:00 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > >> On Wed, Oct 31, 2018 at 01:36:48PM -0700, Andy Lutomirski wrote: >> >>>> On Oct 31, 2018, at 3:02 AM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: >>>> >>>> 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. >> >> This stuff is called *rare* write for a reason. Do we really want to >> allow atomics beyond just store-release? Taking a big lock and then >> writing in the right order should cover everything, no? > > Ah, so no. That naming is very misleading. > > We modify page-tables a _lot_. The point is that only a few sanctioned > sites are allowed writing to it, not everybody. > > I _think_ the use-case for atomics is updating the reference counts of > objects that are in this write-rare domain. But I'm not entirely clear > on that myself either. I just really want to avoid duplicating that > stuff. Sounds nuts. Doing a rare-write is many hundreds of cycles at best. Using that for a reference count sounds wacky. Can we see a *real* use case before we over complicate the API?