On Sat, Apr 21, 2018 at 06:52:18PM +0200, Vlastimil Babka wrote: > On 04/13/2018 07:11 PM, Matthew Wilcox wrote: > > On Fri, Apr 13, 2018 at 03:16:26PM +0200, David Hildenbrand wrote: > >> online_pages()/offline_pages() theoretically allows us to work on > >> sub-section sizes. This is especially relevant in the context of > >> virtualization. It e.g. allows us to add/remove memory to Linux in a VM in > >> 4MB chunks. > >> > >> While the whole section is marked as online/offline, we have to know > >> the state of each page. E.g. to not read memory that is not online > >> during kexec() or to properly mark a section as offline as soon as all > >> contained pages are offline. > > > > Can you not use PG_reserved for this purpose? > > Sounds like your newly introduced "page types" could be useful here? I > don't suppose those offline pages would be using mapcount which is > aliased there? Oh, that's a good point! Yes, this is a perfect use for page_type. We have something like twenty bits available there. Now you've got me thinking that we can move PG_hwpoison and PG_reserved to be page_type flags too. That'll take us from 23 to 21 bits (on 32-bit, with PG_UNCACHED)