On Thu, Apr 04, 2019 at 09:21:52AM +0200, Peter Zijlstra wrote: > On Wed, Apr 03, 2019 at 11:34:04AM -0600, Khalid Aziz wrote: > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > > index 2c471a2c43fa..d17d33f36a01 100644 > > --- a/include/linux/mm_types.h > > +++ b/include/linux/mm_types.h > > @@ -204,6 +204,14 @@ struct page { > > #ifdef LAST_CPUPID_NOT_IN_PAGE_FLAGS > > int _last_cpupid; > > #endif > > + > > +#ifdef CONFIG_XPFO > > + /* Counts the number of times this page has been kmapped. */ > > + atomic_t xpfo_mapcount; > > + > > + /* Serialize kmap/kunmap of this page */ > > + spinlock_t xpfo_lock; > > NAK, see ALLOC_SPLIT_PTLOCKS > > spinlock_t can be _huge_ (CONFIG_PROVE_LOCKING=y), also are you _really_ > sure you want spinlock_t and not raw_spinlock_t ? For > CONFIG_PREEMPT_FULL spinlock_t turns into a rtmutex. > > > +#endif > > Growing the page-frame by 8 bytes (in the good case) is really sad, > that's a _lot_ of memory. Originally we had this in page_ext, it's not really clear to me why we moved it out. Julien? Tycho