Message ID | 1558973315-19655-1-git-send-email-miles.chen@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64: mm: make CONFIG_ZONE_DMA32 configurable | expand |
On 27/05/2019 17:08, Miles Chen wrote: > This change makes CONFIG_ZONE_DMA32 defuly y and allows users > to overwrite it. > > For the SoCs that do not need CONFIG_ZONE_DMA32, this is the > first step to manage all available memory by a single > zone(normal zone) to reduce the overhead of multiple zones. > > The change also fixes a build error when CONFIG_NUMA=y and > CONFIG_ZONE_DMA32=n. > > arch/arm64/mm/init.c:195:17: error: use of undeclared identifier 'ZONE_DMA32' > max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); > > Signed-off-by: Miles Chen <miles.chen@mediatek.com> > --- > arch/arm64/Kconfig | 3 ++- > arch/arm64/mm/init.c | 2 ++ > 2 files changed, 4 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > index 76f6e4765f49..9d20a736d1d1 100644 > --- a/arch/arm64/Kconfig > +++ b/arch/arm64/Kconfig > @@ -260,7 +260,8 @@ config GENERIC_CALIBRATE_DELAY > def_bool y > > config ZONE_DMA32 > - def_bool y > + bool "Support DMA32 zone" This probably warrants an "if EMBEDDED" or "if EXPERT", since turning it off produces a kernel which won't work at all on certain systems (I've played around with this before...) > + default y > > config HAVE_GENERIC_GUP > def_bool y > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > index d2adffb81b5d..96829ce21f99 100644 > --- a/arch/arm64/mm/init.c > +++ b/arch/arm64/mm/init.c > @@ -191,8 +191,10 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) > { > unsigned long max_zone_pfns[MAX_NR_ZONES] = {0}; > > +#ifdef CONFIG_ZONE_DMA32 > if (IS_ENABLED(CONFIG_ZONE_DMA32)) There's no point keeping the IS_ENABLED() check when it's entirely redundant with the #ifdefs. Robin. > max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); > +#endif > max_zone_pfns[ZONE_NORMAL] = max; > > free_area_init_nodes(max_zone_pfns); >
On Tue, 2019-05-28 at 11:43 +0100, Robin Murphy wrote: > On 27/05/2019 17:08, Miles Chen wrote: > > This change makes CONFIG_ZONE_DMA32 defuly y and allows users > > to overwrite it. > > > > For the SoCs that do not need CONFIG_ZONE_DMA32, this is the > > first step to manage all available memory by a single > > zone(normal zone) to reduce the overhead of multiple zones. > > > > The change also fixes a build error when CONFIG_NUMA=y and > > CONFIG_ZONE_DMA32=n. > > > > arch/arm64/mm/init.c:195:17: error: use of undeclared identifier 'ZONE_DMA32' > > max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); > > > > Signed-off-by: Miles Chen <miles.chen@mediatek.com> > > --- > > arch/arm64/Kconfig | 3 ++- > > arch/arm64/mm/init.c | 2 ++ > > 2 files changed, 4 insertions(+), 1 deletion(-) > > > > diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig > > index 76f6e4765f49..9d20a736d1d1 100644 > > --- a/arch/arm64/Kconfig > > +++ b/arch/arm64/Kconfig > > @@ -260,7 +260,8 @@ config GENERIC_CALIBRATE_DELAY > > def_bool y > > > > config ZONE_DMA32 > > - def_bool y > > + bool "Support DMA32 zone" > > This probably warrants an "if EMBEDDED" or "if EXPERT", since turning it > off produces a kernel which won't work at all on certain systems (I've > played around with this before...) Thanks for your comment. I'll put a "if EXPERT" here to avoid this case. > > > + default y > > > > config HAVE_GENERIC_GUP > > def_bool y > > diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c > > index d2adffb81b5d..96829ce21f99 100644 > > --- a/arch/arm64/mm/init.c > > +++ b/arch/arm64/mm/init.c > > @@ -191,8 +191,10 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) > > { > > unsigned long max_zone_pfns[MAX_NR_ZONES] = {0}; > > > > +#ifdef CONFIG_ZONE_DMA32 > > if (IS_ENABLED(CONFIG_ZONE_DMA32)) > > There's no point keeping the IS_ENABLED() check when it's entirely > redundant with the #ifdefs. I'll remove the IS_ENABLE() code in next patch. -Miles > > Robin. > > > max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); > > +#endif > > max_zone_pfns[ZONE_NORMAL] = max; > > > > free_area_init_nodes(max_zone_pfns); > >
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 76f6e4765f49..9d20a736d1d1 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -260,7 +260,8 @@ config GENERIC_CALIBRATE_DELAY def_bool y config ZONE_DMA32 - def_bool y + bool "Support DMA32 zone" + default y config HAVE_GENERIC_GUP def_bool y diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c index d2adffb81b5d..96829ce21f99 100644 --- a/arch/arm64/mm/init.c +++ b/arch/arm64/mm/init.c @@ -191,8 +191,10 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max) { unsigned long max_zone_pfns[MAX_NR_ZONES] = {0}; +#ifdef CONFIG_ZONE_DMA32 if (IS_ENABLED(CONFIG_ZONE_DMA32)) max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); +#endif max_zone_pfns[ZONE_NORMAL] = max; free_area_init_nodes(max_zone_pfns);
This change makes CONFIG_ZONE_DMA32 defuly y and allows users to overwrite it. For the SoCs that do not need CONFIG_ZONE_DMA32, this is the first step to manage all available memory by a single zone(normal zone) to reduce the overhead of multiple zones. The change also fixes a build error when CONFIG_NUMA=y and CONFIG_ZONE_DMA32=n. arch/arm64/mm/init.c:195:17: error: use of undeclared identifier 'ZONE_DMA32' max_zone_pfns[ZONE_DMA32] = PFN_DOWN(max_zone_dma_phys()); Signed-off-by: Miles Chen <miles.chen@mediatek.com> --- arch/arm64/Kconfig | 3 ++- arch/arm64/mm/init.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-)