From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752538AbdF2LRq (ORCPT ); Thu, 29 Jun 2017 07:17:46 -0400 Received: from foss.arm.com ([217.140.101.70]:53760 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751725AbdF2LRi (ORCPT ); Thu, 29 Jun 2017 07:17:38 -0400 Date: Thu, 29 Jun 2017 12:16:45 +0100 From: Mark Rutland To: Doug Berger Cc: Russell King , Nicolas Pitre , Jon Medhurst , Florian Fainelli , Kees Cook , Ard Biesheuvel , Marc Zyngier , open list , Laura Abbott , "moderated list:ARM PORT" Subject: Re: [PATCH v2] ARM: memblock limit must be pmd-aligned Message-ID: <20170629111645.GC11040@leverpostej> References: <20170627173330.13804-1-opendmb@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170627173330.13804-1-opendmb@gmail.com> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Jun 27, 2017 at 10:33:29AM -0700, Doug Berger wrote: > The pmd containing memblock_limit is cleared by prepare_page_table() > which creates the opportunity for early_alloc() to allocate unmapped > memory if memblock_limit is not pmd aligned causing a boot-time hang. > > Commit 965278dcb8ab ("ARM: 8356/1: mm: handle non-pmd-aligned end of RAM") > attempted to resolve this problem, but there is a path through the > adjust_lowmem_bounds() routine where if all memory regions start and > end on pmd-aligned addresses the memblock_limit will be set to > arm_lowmem_limit. > > Since arm_lowmem_limit can be affected by the vmalloc early parameter, > the value of arm_lowmem_limit may not be pmd-aligned. This commit > corrects this oversight such that memblock_limit is always rounded > down to pmd-alignment. > > Fixes: 965278dcb8ab ("ARM: 8356/1: mm: handle non-pmd-aligned end of RAM") > Signed-off-by: Doug Berger > Suggested-by: Mark Rutland As a minor nit, it would be better for the title to be something like "ARM: ensure memblock-limit is pmd-aligned", but either way: Acked-by: Mark Rutland Assuming Russell doesn't have any furhter comments, this looks good to drop into the patch system. See: http://www.arm.linux.org.uk/developer/patches/info.php ... for instructions on how to send patches there. Thanks, Mark. > --- > Changes for v2: > - Cleaner equivalent implementation suggested by Mark Rutland > - Revised description to better capture the history > > arch/arm/mm/mmu.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c > index 31af3cb59a60..e46a6a446cdd 100644 > --- a/arch/arm/mm/mmu.c > +++ b/arch/arm/mm/mmu.c > @@ -1218,15 +1218,15 @@ void __init adjust_lowmem_bounds(void) > > high_memory = __va(arm_lowmem_limit - 1) + 1; > > + if (!memblock_limit) > + memblock_limit = arm_lowmem_limit; > + > /* > * Round the memblock limit down to a pmd size. This > * helps to ensure that we will allocate memory from the > * last full pmd, which should be mapped. > */ > - if (memblock_limit) > - memblock_limit = round_down(memblock_limit, PMD_SIZE); > - if (!memblock_limit) > - memblock_limit = arm_lowmem_limit; > + memblock_limit = round_down(memblock_limit, PMD_SIZE); > > if (!IS_ENABLED(CONFIG_HIGHMEM) || cache_is_vipt_aliasing()) { > if (memblock_end_of_DRAM() > arm_lowmem_limit) { > -- > 2.13.0 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel