On Wed, 2017-04-05 at 16:40 -0400, Jérôme Glisse wrote: > This introduce a simple struct and associated helpers for device driver > to use when hotpluging un-addressable device memory as ZONE_DEVICE. It > will find a unuse physical address range and trigger memory hotplug for > it which allocates and initialize struct page for the device memory. > > Signed-off-by: Jérôme Glisse <jglisse@xxxxxxxxxx> > Signed-off-by: Evgeny Baskakov <ebaskakov@xxxxxxxxxx> > Signed-off-by: John Hubbard <jhubbard@xxxxxxxxxx> > Signed-off-by: Mark Hairgrove <mhairgrove@xxxxxxxxxx> > Signed-off-by: Sherry Cheung <SCheung@xxxxxxxxxx> > Signed-off-by: Subhash Gutti <sgutti@xxxxxxxxxx> > --- > include/linux/hmm.h | 114 +++++++++++++++ > mm/Kconfig | 9 ++ > mm/hmm.c | 398 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 3 files changed, 521 insertions(+) > > +/* > + * To add (hotplug) device memory, HMM assumes that there is no real resource > + * that reserves a range in the physical address space (this is intended to be > + * use by unaddressable device memory). It will reserve a physical range big > + * enough and allocate struct page for it. I've found that the implementation of this is quite non-portable, in that starting from iomem_resource.end+1-size (which is effectively -size) on my platform (powerpc) does not give expected results. It could be that additional changes are needed to arch_add_memory() to support this use case. > + > + size = ALIGN(size, SECTION_SIZE); > + addr = (iomem_resource.end + 1ULL) - size; Why don't we allocate_resource() with the right constraints and get a new unused region? Thanks, Balbir -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>