From patchwork Fri Nov 12 09:20:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhaoyang Huang X-Patchwork-Id: 12616403 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E69A1C433F5 for ; Fri, 12 Nov 2021 09:21:06 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 72F3761039 for ; Fri, 12 Nov 2021 09:21:06 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 72F3761039 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvack.org Received: by kanga.kvack.org (Postfix) id D966B6B0074; Fri, 12 Nov 2021 04:21:05 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id D1E1D6B0078; Fri, 12 Nov 2021 04:21:05 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BE5B86B007B; Fri, 12 Nov 2021 04:21:05 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0212.hostedemail.com [216.40.44.212]) by kanga.kvack.org (Postfix) with ESMTP id AC1A46B0074 for ; Fri, 12 Nov 2021 04:21:05 -0500 (EST) Received: from smtpin23.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 6D7B652B8 for ; Fri, 12 Nov 2021 09:21:05 +0000 (UTC) X-FDA: 78799734090.23.743EF56 Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by imf23.hostedemail.com (Postfix) with ESMTP id 467F6900038A for ; Fri, 12 Nov 2021 09:20:48 +0000 (UTC) Received: by mail-pj1-f51.google.com with SMTP id iq11so6244108pjb.3 for ; Fri, 12 Nov 2021 01:21:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id; bh=TXyhI6ZNw+Pl/TFoBoEd6+kAJZTjqmZS/HvSrvOgA+A=; b=Udsv5nFmG2Lgs+UffFeRimciscQKhmznKMf8m+Bwdd+UEknozr4HeRxSW95peGh+Z9 FHmfQMyIuehSJXrfU4E+U4FhmHXyzNiX5KwMNBqK2AWLSuubvc03BirwOkOcRyNXv8yb +H6f0thX/9vvTyD/uHlP3tDhq3yf3H8siQ9eM2CEEZJe7u2s3XmoskM3R13yC1+fd3NU UfFSzI4XX/PYHfdTVZrdt03FY94OQlimDUOPxkJ2A/ChPgVx3djtL8+8monGnvCND5v5 KNqGNBjbltfjxrNZYBgEjPAF82foxElJry/JhEZvYYT5dpfq/IYkbD5m49CDzYbWlrUq IDwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id; bh=TXyhI6ZNw+Pl/TFoBoEd6+kAJZTjqmZS/HvSrvOgA+A=; b=wtX9eShIaCeoiIfsQDqYY3s2Gc8BJA0YEIPqiDAldN/MaOGrlBsSOSnEc+ViWKHG/I 87cPyWKOAUs+8SZhGwhYzIlQ2PGrmSXdXpCUwXC5EqvWaXC85kj/FjqCLW+9E+sTw+zQ czDrE35r0t1sbOv2AxFn4Sz4l069nj/bcQ0wTUANmYdTS1bon720vyCM8Csh9HcOGVxn PHXsAPMJKypKS7CRU+GCMOTCo8+vw4gQzCWVEv4aDxHr5vpV9TKpRiZkccafUVrzdfDK IPWmN2k4QTjGUnFLX25i9Y7cf1xQ3TjwCzftmOIK+ZgSp+TgCRvL4EB3GJqsAaHTAPlM eWRQ== X-Gm-Message-State: AOAM5334+5l/LuSuw8qYeAPDwyIFn/kotcIeyL426G0dHoLLPi5+6j7D Q1vbb7ssA8XLg2t0pK1FI2s= X-Google-Smtp-Source: ABdhPJwWp7s8EKiynQ0JAxWuWI1Bp624xvZvFfTkhMU03kKAHWOhornq4AiW/Tpi92FRzU5pgTiBng== X-Received: by 2002:a17:90a:1f45:: with SMTP id y5mr16350571pjy.138.1636708863237; Fri, 12 Nov 2021 01:21:03 -0800 (PST) Received: from bj03382pcu.spreadtrum.com ([117.18.48.102]) by smtp.gmail.com with ESMTPSA id d19sm5876922pfl.169.2021.11.12.01.20.57 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Nov 2021 01:21:02 -0800 (PST) From: Huangzhaoyang To: Ard Biesheuvel , Catalin Marinas , Will Deacon , Anshuman Khandual , Andrew Morton , Nicholas Piggin , Mike Rapoport , Pavel Tatashin , Christophe Leroy , Jonathan Marek , Zhaoyang Huang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH] arch: arm64: have memblocks out of kernel text use section map Date: Fri, 12 Nov 2021 17:20:42 +0800 Message-Id: <1636708842-25787-1-git-send-email-huangzhaoyang@gmail.com> X-Mailer: git-send-email 1.7.9.5 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 467F6900038A X-Stat-Signature: w4g5u68c1oibgdajzq8y9kkfbc67dqwp Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=Udsv5nFm; spf=pass (imf23.hostedemail.com: domain of huangzhaoyang@gmail.com designates 209.85.216.51 as permitted sender) smtp.mailfrom=huangzhaoyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-HE-Tag: 1636708848-87685 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Zhaoyang Huang By comparing the swapper_pg_dir with k54 and previous versions,we find that the linear mappings within which the addr is out of kernel text section will use the smallest pte. It should arise for the sake of rodata_full, which set all memblock use NO_CONT_MAPPINGS. Signed-off-by: Zhaoyang Huang --- arch/arm64/mm/mmu.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c index cfd9deb..14e1bea 100644 --- a/arch/arm64/mm/mmu.c +++ b/arch/arm64/mm/mmu.c @@ -252,6 +252,8 @@ static void init_pmd(pud_t *pudp, unsigned long addr, unsigned long end, pmd_clear_fixmap(); } +static bool crash_mem_map __initdata; + static void alloc_init_cont_pmd(pud_t *pudp, unsigned long addr, unsigned long end, phys_addr_t phys, pgprot_t prot, @@ -259,7 +261,15 @@ static void alloc_init_cont_pmd(pud_t *pudp, unsigned long addr, { unsigned long next; pud_t pud = READ_ONCE(*pudp); + unsigned long len = end - addr; + phys_addr_t kernel_start = __pa_symbol(_stext); + phys_addr_t kernel_end = __pa_symbol(__init_begin); + if (debug_pagealloc_enabled() || crash_mem_map || IS_ENABLED(CONFIG_KFENCE)) + ; + else if (phys > kernel_end || phys + len < kernel_start) { + flags &= ~(NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS); + } /* * Check for initial section mappings in the pgd/pud. */ @@ -483,7 +493,6 @@ void __init mark_linear_text_alias_ro(void) PAGE_KERNEL_RO); } -static bool crash_mem_map __initdata; static int __init enable_crash_mem_map(char *arg) {