pm: Allow RCU lookups and qlocked updaters
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 29 Mar 2018 18:42:22 +0000 (14:42 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 30 Apr 2018 18:36:28 +0000 (14:36 -0400)
commit6e2eaa4ef2cec26ebdbb543aace46fa90edec80a
tree896c738b128a9b80b6b9d2b61b151265c3d7efd9
parenta4d7239ac29d9093ef7118969e57e6d8700d13a7
pm: Allow RCU lookups and qlocked updaters

We're going to need to do writeback, and the easiest way to do that is to
hold a qlock on our callback.  We can't just replace the old pm spinlock
with a qlock, since it is grabbed by other spinlock holders (old VMR code,
both for pm_add_vmr and for pm_load_page_nowait()).

Also, this allows lockless lookups, which is nice.

Overall, the VMR and PM/radix code still needs a lot of structural work,
possibly involving thinking more about huge pages.  For now, this is a
modest change and we'll keep the basic infrastructure in place - enough
that we can make progress with the TFS code.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/pagemap.h
kern/include/radix.h
kern/src/pagemap.c
kern/src/radix.c