Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1751895pxj; Wed, 19 May 2021 13:05:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyznJVM66aa37+CYFjR/VH1eH/I1Q9T8dsyfO2/AtWNZQ9JzoYpTO2AIbc1ef8frmwSS2+Q X-Received: by 2002:a05:6402:1052:: with SMTP id e18mr836859edu.366.1621454727966; Wed, 19 May 2021 13:05:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621454727; cv=none; d=google.com; s=arc-20160816; b=Eva/pB+mDMXsj7R1uQys8bMb3T7+9rhP13o7uBD4HS999pOxZzD1wYqgkuaaSkY+5v pcNGi+psDC050v8oZRvMmmw4bmHHMHO39dgVkzZ+ecn62bXQY7jgWoU1lp1nbBtpLLE5 mh4wBsGvymP7RgGG+c9Uzg2FwJ+wnYaScuQ3JsdmdLi5pL0ZcUQEzj7tWtkhxnh6Ek8Z P4Xd64t0qTqZx3oi5M2xxNvbhWX6Q3872Bhku/4Vfp9iB5kl5zOJ14GUqQqfpqLAC6WB VZcgvZTGjfkDhGvEfoGOfgaZ9+CCQWPxcp8BS1exPFJmqqacdWUGWjDrOYyueMor+zRz g8Dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=BMEzzCUG/Ab0susexTFMtbiGrjOSscrYH78UhOqy5L0=; b=pnriCl2D7//hpp9eWL0R/TApw+cIGHQQ3M6FU3HaBtupKauHc8EyRYfsuA/Zk8cMOC LEEXXTVt6H2KfLNCBllfdwe9e5CXSBS7FbGEc6UMXJ3aQwqhqPOX/+yKhTci8IJyiqkW L9GBCvR02EyMA7Ivav/Uw/UsS0oXon2FOHdLC1vZUFVcwTff7SwRErhe31ucTBu1sOtD jpgkxNESRRsK1NN+1q8PDGuioFUJL4b49e/pZCnfbzOxs5oXuVnXIq7pXjwnH0vWIkbX X2geM0sVOw64O1Bi5WSxjSqEqd9WNHLo7+BWO8YVlZvm51QNB2XTeiWBfZZsk+Uho2t9 CEYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BA6uFoGr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s13si544531eju.675.2021.05.19.13.05.02; Wed, 19 May 2021 13:05:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=BA6uFoGr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354144AbhESORo (ORCPT + 99 others); Wed, 19 May 2021 10:17:44 -0400 Received: from mail.kernel.org ([198.145.29.99]:41100 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354129AbhESOQK (ORCPT ); Wed, 19 May 2021 10:16:10 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3E70C61363; Wed, 19 May 2021 14:14:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1621433690; bh=rRFc0ILonpYJdVr2TDsn36MJ5mLmgIkTfeLqsV9zN18=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BA6uFoGr6PP2RAvPnkryuSxFifPl/Ue7ySDROfWzKgKQq3GkQKW9rq19ourCeWb3A EVJMLpe52ov/1XQQRzdo/VMfIwHU3UIiKVOc/e0zRsSODYzLbhnNMsgknLdyUdKnJv q4iJsh/+6FOA/smUL0yOT0rWAfbHqgYQ7/UZWFsOziOXkd5aB0b+rDKfw/oX9/s7r+ sB+ROfVm0ePvuMaE86faSHvNK6NUa3W5f8n0Znzu2JG7TXH+VqTR9UacVSZVeUQ7XC iIt3V/eHuYSB9QaVMwoY6ly0izSm/TjTkBDb2sD6JCQKoGFKh1fKzEVoVuex31/Pok JvLmqqr6QESjA== From: Mike Rapoport To: linux-arm-kernel@lists.infradead.org Cc: Andrew Morton , Kefeng Wang , Mike Rapoport , Mike Rapoport , Russell King , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v2 3/3] arm: extend pfn_valid to take into accound freed memory map alignment Date: Wed, 19 May 2021 17:14:36 +0300 Message-Id: <20210519141436.11961-4-rppt@kernel.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210519141436.11961-1-rppt@kernel.org> References: <20210519141436.11961-1-rppt@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mike Rapoport When unused memory map is freed the preserved part of the memory map is extended to match pageblock boundaries because lots of core mm functionality relies on homogeneity of the memory map within pageblock boundaries. Since pfn_valid() is used to check whether there is a valid memory map entry for a PFN, make it return true also for PFNs that have memory map entries even if there is no actual memory populated there. Signed-off-by: Mike Rapoport --- arch/arm/mm/init.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c index 9d4744a632c6..6162a070a410 100644 --- a/arch/arm/mm/init.c +++ b/arch/arm/mm/init.c @@ -125,11 +125,22 @@ static void __init zone_sizes_init(unsigned long min, unsigned long max_low, int pfn_valid(unsigned long pfn) { phys_addr_t addr = __pfn_to_phys(pfn); + unsigned long pageblock_size = PAGE_SIZE * pageblock_nr_pages; if (__phys_to_pfn(addr) != pfn) return 0; - return memblock_is_map_memory(addr); + /* + * If address less than pageblock_size bytes away from a present + * memory chunk there still will be a memory map entry for it + * because we round freed memory map to the pageblock boundaries. + */ + if (memblock_overlaps_region(&memblock.memory, + ALIGN_DOWN(addr, pageblock_size), + pageblock_size)) + return 1; + + return 0; } EXPORT_SYMBOL(pfn_valid); #endif -- 2.28.0