On Wed, Jul 17, 2019 at 10:01:01AM +0200, David Hildenbrand wrote: > I'd also like to note that we should strive for making all zone-related > changes when offlining in the future, not when removing memory. So > ideally, any core changes we perform from now, should make that step > (IOW implementing that) easier, not harder. Of course, BUGs have to be > fixed. > > The rough idea would be to also mark ZONE_DEVICE sections as ONLINE (or > rather rename it to "ACTIVE" to generalize). > > For each section we would then have > > - pfn_valid(): We have a valid "struct page" / memmap > - pfn_present(): We have actually added that memory via an oficial > interface to mm (e.g., arch_add_memory() ) > - pfn_online() / (or pfn_active()): Memory is active (online in "buddy"- > speak, or memory that was moved to the ZONE_DEVICE zone) > > When resizing the zones (e.g., when offlining memory), we would then > search for pfn_online(), not pfn_present(). > > In addition to move_pfn_range_to_zone(), we would have > remove_pfn_range_from_zone(), called during offline_pages() / by > devmem/hmm/pmem code before removing. > > (I started to look into this, but I don't have any patches yet) Yes, it seems like a good approach, and something that makes sense to pursue. FWIF, I sent a patchset [1] for that a long time ago, but I could not follow-up due to time constraints. [1] https://patchwork.kernel.org/cover/10700783/ -- Oscar Salvador SUSE L3