From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933181AbdDGBiM (ORCPT ); Thu, 6 Apr 2017 21:38:12 -0400 Received: from mail-pg0-f66.google.com ([74.125.83.66]:36033 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756043AbdDGBiA (ORCPT ); Thu, 6 Apr 2017 21:38:00 -0400 Message-ID: <1491529054.12351.16.camel@gmail.com> Subject: Re: [HMM 14/16] mm/hmm/devmem: device memory hotplug using ZONE_DEVICE From: Balbir Singh To: =?ISO-8859-1?Q?J=E9r=F4me?= Glisse , akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: John Hubbard , Dan Williams , Naoya Horiguchi , David Nellans , Evgeny Baskakov , Mark Hairgrove , Sherry Cheung , Subhash Gutti In-Reply-To: <20170405204026.3940-15-jglisse@redhat.com> References: <20170405204026.3940-1-jglisse@redhat.com> <20170405204026.3940-15-jglisse@redhat.com> Content-Type: text/plain; charset="UTF-8" Date: Fri, 07 Apr 2017 11:37:34 +1000 Mime-Version: 1.0 X-Mailer: Evolution 3.22.3 (3.22.3-1.fc25) Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Signed-off-by: Evgeny Baskakov > Signed-off-by: John Hubbard > Signed-off-by: Mark Hairgrove > Signed-off-by: Sherry Cheung > Signed-off-by: Subhash Gutti > --- > 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