From patchwork Tue Sep 12 14:16:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13381792 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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 55C9ACA0EEC for ; Tue, 12 Sep 2023 14:19:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=b5BAEza6EPIN5mecaPNoDTC+ZuJQMEOaHN5B+wEERXQ=; b=pEoDVQ7coSBtdeufHH5JD0WvK7 uU/PpseJaKeLY528cieMY1Hros2nvIfduBNbNxWfEkFwHhu6J6e2C2sfjabql2qsiKEzE4IvAaV0w ifNEvjuGWe1NCz0DqjI9pIMD7XJYogPUp1QqOnzsx4LjleUXS8X959EPzycBcLx2VDm507e2zPrx0 Awo7RfNS1RDxmM4q6GQfrdEArBQsL+LSDrLmuy080NM6DvtNUJsCOOY6NT+bn2kKJ/t7wLWXnzGKX Bqef4DWbI+T50nbRZB4J8R9ecNZFggmVWC2wGgzs2waZ7jZUBxzlPYzx/OhlL9YQpZjKXamg5zblD LdPcF2ug==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qg4Eb-003XOU-0u; Tue, 12 Sep 2023 14:19:21 +0000 Received: from mail-yb1-f202.google.com ([209.85.219.202]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qg4Dn-003Wgb-0N for linux-arm-kernel@lists.infradead.org; Tue, 12 Sep 2023 14:18:45 +0000 Received: by mail-yb1-f202.google.com with SMTP id 3f1490d57ef6-d80256afb63so8011404276.0 for ; Tue, 12 Sep 2023 07:18:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1694528308; x=1695133108; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=/uq8kNxUep67TUPf7UsnzPOBM66r60ifgQ29Br+vAno=; b=P8ljh2aEQw/kWreww78zyXPV7UqXI9Aq5qnSdAnaqXIjGUht7FGGzPO7OGYpAjUUs7 ia4Io+i0D8c++qUrmAQu9/39lpct5ZIk86Qk2wjiATQyo2GOb7RKXdFXsQDMN3RzlneH Im/dZrSLfIoPuUZAXJ6JMw9gED6aX6g8Y3BeqBputXEI4lGtzhaMsByTI1JwaphFDswI cleOTxpdqCXtmiHGr55ujk48EQzHR9c4fiZhSA+OdJsrmZwejzPNbSaYGObDdUljx1gI nuq/xaOtAxvyj0WBTFEaQJH+soT/5FJFOzDkNuhwJmJIwf96CLq3aQEPdkQWLG5dOUCF yxXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694528308; x=1695133108; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=/uq8kNxUep67TUPf7UsnzPOBM66r60ifgQ29Br+vAno=; b=Rr/+Inf4/jcDhKbbD3HdyN+6vXk4hx9BeSTM/MOeDIZsCPTXb8zBfB7MzhP4iXCb4r OPWQEbYZGFI9ehVmn+J4lB7mvu4HxB4KD5cCuwhFAaOHOTbVSCscyMdUe7mlAQ7ipyTD lDD+GaI7eqWdf7luBn/8RJJ4BOuSN01UVFdZc6YrF7X0FNrlDD2zwwwaPyE9ffIdNwjq JPYvYCLOy2Qzrni5Lb2P5qc5PufbyvnNcwp4gjq2/Xbb8cp43PPVIICpJOmg5bnAwkih cUKbuygjZYh81gfCB4e0Ytr7DGGlEKEGnvRI2lWTqyw7fKq0KeSnUBp5t2PAnL7JycL3 UQAA== X-Gm-Message-State: AOJu0YzmaMD2bxkJWv6E7jNzJdR+ScC0HS4t+HQZ8swgq8wrBO/lKuMo GLoXe1IhAx8WyNmnpENVK1bieoBpH9KahuXjLdg++CBlj66iz+w/hB+KuxzxxSliSHTj51eMl+1 IOvW78FAHMQVR47NWzkMvUfYfmEXSN86vL+RKopFO2XlHi4v/qpQmqiPg/5hL8ge4sdtdxeR3Oy U= X-Google-Smtp-Source: AGHT+IG3kQ7356/kn+51Tp4kPdRwAhfJLIusASHs0NjrMrtTkpRoi+I02j4JMX9eN6I46OZLVZqQrA8+ X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a25:77c1:0:b0:d81:1cfe:70bc with SMTP id s184-20020a2577c1000000b00d811cfe70bcmr40647ybc.3.1694528308538; Tue, 12 Sep 2023 07:18:28 -0700 (PDT) Date: Tue, 12 Sep 2023 14:16:20 +0000 In-Reply-To: <20230912141549.278777-63-ardb@google.com> Mime-Version: 1.0 References: <20230912141549.278777-63-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1834; i=ardb@kernel.org; h=from:subject; bh=CKEH2MCk6aR4/ylPquP0IGzEdUdPYBvTsIrNtoxJujA=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZWhaOt5pdm65h1Vl67OfX1vyxPzmZ+9PzazqCyeaBokP SlkIvvejlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjCR+Y4M/yNDt669zC69bC6b edPiU+8T260cnkToyL9r1tHYfTmWN5CRYUPzywCT//tXzd6tk1ryfntOr2ZA8IQjJ7ZdWDl5qWH YZz4A X-Mailer: git-send-email 2.42.0.283.g2d96d420d3-goog Message-ID: <20230912141549.278777-93-ardb@google.com> Subject: [PATCH v4 30/61] arm64: head: allocate more pages for the kernel mapping From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook , Joey Gouly X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230912_071831_241737_C8FDC938 X-CRM114-Status: GOOD ( 14.81 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel In preparation for switching to an early kernel mapping routine that maps each segment according to its precise boundaries, and with the correct attributes, let's allocate some extra pages for page tables for the 4k page size configuration. This is necessary because the start and end of each segment may not be aligned to the block size, and so we'll need an extra page table at each segment boundary. Signed-off-by: Ard Biesheuvel --- arch/arm64/include/asm/kernel-pgtable.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/kernel-pgtable.h b/arch/arm64/include/asm/kernel-pgtable.h index 83ddb14b95a5..0631604995ee 100644 --- a/arch/arm64/include/asm/kernel-pgtable.h +++ b/arch/arm64/include/asm/kernel-pgtable.h @@ -68,7 +68,7 @@ + EARLY_PGDS((vstart), (vend), add) /* each PGDIR needs a next level page table */ \ + EARLY_PUDS((vstart), (vend), add) /* each PUD needs a next level page table */ \ + EARLY_PMDS((vstart), (vend), add)) /* each PMD needs a next level page table */ -#define INIT_DIR_SIZE (PAGE_SIZE * EARLY_PAGES(KIMAGE_VADDR, _end, EXTRA_PAGE)) +#define INIT_DIR_SIZE (PAGE_SIZE * (EARLY_PAGES(KIMAGE_VADDR, _end, EXTRA_PAGE) + EARLY_SEGMENT_EXTRA_PAGES)) /* the initial ID map may need two extra pages if it needs to be extended */ #if VA_BITS < 48 @@ -89,6 +89,15 @@ #define SWAPPER_TABLE_SHIFT PMD_SHIFT #endif +/* The number of segments in the kernel image (text, rodata, inittext, initdata, data+bss) */ +#define KERNEL_SEGMENT_COUNT 5 + +#if SWAPPER_BLOCK_SIZE > SEGMENT_ALIGN +#define EARLY_SEGMENT_EXTRA_PAGES (KERNEL_SEGMENT_COUNT + 1) +#else +#define EARLY_SEGMENT_EXTRA_PAGES 0 +#endif + /* * Initial memory map attributes. */