Messages in this thread Patch in this message | | | Subject | Re: [PATCH 3/4] ARM: change vmalloc_min to vmalloc_start | From | "Xu, Yanfei" <> | Date | Wed, 19 May 2021 13:25:18 +0800 |
| |
On 5/18/21 8:15 PM, Russell King (Oracle) wrote: > [Please note: This e-mail is from an EXTERNAL e-mail address] > > Change the current vmalloc_min, which is supposed to be the lowest > address of vmalloc space including the VMALLOC_OFFSET, to vmalloc_start > which does not include VMALLOC_OFFSET. > > Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk> > --- > arch/arm/mm/mmu.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c > index d932c46a02e0..457203b41ceb 100644 > --- a/arch/arm/mm/mmu.c > +++ b/arch/arm/mm/mmu.c > @@ -1123,8 +1123,7 @@ void __init debug_ll_io_init(void) > } > #endif > > -static unsigned long __initdata vmalloc_min = > - VMALLOC_END - (240 << 20) - VMALLOC_OFFSET; > +static unsigned long __initdata vmalloc_start = VMALLOC_END - (240 << 20); > > /* > * vmalloc=size forces the vmalloc area to be exactly 'size' > @@ -1142,14 +1141,14 @@ static int __init early_vmalloc(char *arg) > vmalloc_reserve >> 20); > } > > - vmalloc_max = VMALLOC_END - (PAGE_OFFSET + SZ_32M); > + vmalloc_max = VMALLOC_END - (PAGE_OFFSET + SZ_32M + VMALLOC_OFFSET); > if (vmalloc_reserve > vmalloc_max) { > vmalloc_reserve = vmalloc_max; > pr_warn("vmalloc area is too big, limiting to %luMB\n", > vmalloc_reserve >> 20); > } > > - vmalloc_min = VMALLOC_END - vmalloc_reserve; > + vmalloc_start = VMALLOC_END - vmalloc_reserve; > return 0; > } > early_param("vmalloc", early_vmalloc);
The minimal vamlloc size should reduce 8MB, to be same with the original vmalloc size.
@@ -1133,8 +1133,8 @@ static int __init early_vmalloc(char *arg) unsigned long vmalloc_reserve = memparse(arg, NULL); unsigned long vmalloc_max;
- if (vmalloc_reserve < SZ_16M) { - vmalloc_reserve = SZ_16M; + if (vmalloc_reserve < SZ_8M) { + vmalloc_reserve = SZ_8M; pr_warn("vmalloc area too small, limiting to %luMB\n", vmalloc_reserve >> 20); }
Another point, the current size of "vmalloc=" will be align up with 8MB, should we align it down? The original is align down when we consider the vmalloc_offest in vmalloc size. If yes, we could do it like
index eb6173315291..1fc2696fadd2 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c @@ -1133,8 +1133,9 @@ static int __init early_vmalloc(char *arg) unsigned long vmalloc_reserve = memparse(arg, NULL); unsigned long vmalloc_max;
- if (vmalloc_reserve < SZ_16M) { - vmalloc_reserve = SZ_16M; + vmalloc_reserve = ALIGN_DOWN(vmalloc_reserve, SZ_8M); + if (vmalloc_reserve < SZ_8M) { + vmalloc_reserve = SZ_8M; pr_warn("vmalloc area too small, limiting to %luMB\n", vmalloc_reserve >> 20); }
Regards, Yanfei
> @@ -1169,7 +1168,8 @@ void __init adjust_lowmem_bounds(void) > * and may itself be outside the valid range for which phys_addr_t > * and therefore __pa() is defined. > */ > - vmalloc_limit = (u64)vmalloc_min - PAGE_OFFSET + PHYS_OFFSET; > + vmalloc_limit = (u64)vmalloc_start - > + (PAGE_OFFSET + PHYS_OFFSET + VMALLOC_OFFSET); > > /* > * The first usable region must be PMD aligned. Mark its start > -- > 2.20.1 >
| |