Messages in this thread | | | From | Dan Williams <> | Date | Wed, 5 Feb 2020 21:51:27 -0800 | Subject | Re: [PATCH 2/5] mm/memremap_pages: Introduce memremap_compat_align() |
| |
On Tue, Feb 4, 2020 at 7:05 PM Michael Ellerman <mpe@ellerman.id.au> wrote: > > Dan Williams <dan.j.williams@intel.com> writes: > > The "sub-section memory hotplug" facility allows memremap_pages() users > > like libnvdimm to compensate for hardware platforms like x86 that have a > > section size larger than their hardware memory mapping granularity. The > > compensation that sub-section support affords is being tolerant of > > physical memory resources shifting by units smaller (64MiB on x86) than > > the memory-hotplug section size (128 MiB). Where the platform > > physical-memory mapping granularity is limited by the number and > > capability of address-decode-registers in the memory controller. > > > > While the sub-section support allows memremap_pages() to operate on > > sub-section (2MiB) granularity, the Power architecture may still > > require 16MiB alignment on "!radix_enabled()" platforms. > > > > In order for libnvdimm to be able to detect and manage this per-arch > > limitation, introduce memremap_compat_align() as a common minimum > > alignment across all driver-facing memory-mapping interfaces, and let > > Power override it to 16MiB in the "!radix_enabled()" case. > > > > The assumption / requirement for 16MiB to be a viable > > memremap_compat_align() value is that Power does not have platforms > > where its equivalent of address-decode-registers never hardware remaps a > > persistent memory resource on smaller than 16MiB boundaries. > > > > Based on an initial patch by Aneesh. > > > > Link: http://lore.kernel.org/r/CAPcyv4gBGNP95APYaBcsocEa50tQj9b5h__83vgngjq3ouGX_Q@mail.gmail.com > > Reported-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> > > Reported-by: Jeff Moyer <jmoyer@redhat.com> > > Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > Cc: Paul Mackerras <paulus@samba.org> > > Cc: Michael Ellerman <mpe@ellerman.id.au> > > Signed-off-by: Dan Williams <dan.j.williams@intel.com> > > --- > > arch/powerpc/include/asm/io.h | 10 ++++++++++ > > drivers/nvdimm/pfn_devs.c | 2 +- > > include/linux/io.h | 23 +++++++++++++++++++++++ > > include/linux/mmzone.h | 1 + > > 4 files changed, 35 insertions(+), 1 deletion(-) > > The powerpc change here looks fine to me. > > Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc)
Thanks Michael, unfortunately the kbuild robot just woke up and said that mips does not like including mmzone.h from io.h. The entanglements look intractable.
Is there a file I can stash a strong definition of memremap_compat_align(), maybe arch/powerpc/mm/mem.c? Then I can put a generic __weak definition in mm/memremap.c rather than play header file include games.
| |