From patchwork Wed Dec 13 08:40:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13490548 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 B2CBAC4167D for ; Wed, 13 Dec 2023 08:41:22 +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=C2SKgiBy8Qesoia4gbvMKQPRjO/rJemW/XIizGdxBRU=; b=LJLG/ttXUdoC9Bwgi/Cgtg4rE5 B0DMAUIqsC81X1R0iQVr5ri8InLDA5EAGtADlrjkydNqtqvdzJ/zSW23EcRbV1mqDY/4aZpoKjO/W zhl8wx1NwoUR+ASkkhxRhh/wMeF2l22amB1H3Y9/H5mB0p9uS5xRA3IDBql2ksr2nbAjnvjwPFall OmNJGa+Sm+0i4fcFf9rQ8vS9/cC0WDFkrBw72MruFUkQhYGWqQqkyzPZyC7/7hPKP8Ho+BmrwJaJ5 R4YUQ4eCCvjqsm/X+pFSkvI9LdHIXy/+QYAUEtmW6gEJlv2xlgsTQsLfrz9bXHCb6v1SHYXgx5dwo GmkKuQ/w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rDKnU-00E3IF-1L; Wed, 13 Dec 2023 08:40:52 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rDKnO-00E3GV-1t for linux-arm-kernel@lists.infradead.org; Wed, 13 Dec 2023 08:40:48 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-5e19414f714so29311477b3.0 for ; Wed, 13 Dec 2023 00:40:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1702456845; x=1703061645; 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=WN6+IbHUwsDj2Mp0byBMbFLcPXljf01zSOzdPY+DU7c=; b=x01SnZEMrvW2oC2l5BcjTIljYakfa/T1h+FzhgyB03IxFlkZUiHTW8sLZaoCOf+m4h WEdCoMntb8oMKUKxl1CSiSDiW0EUApkBhN5JAhGDOEDWfEQEmURtaROqcI4TXv0mSret f8j+wHKq/TXo4v/JaPooIlLFKijoP3qQrdPPNW/KEEGta277jPwFjtPsK9fZALS762dd Xdf/FLvEc4z9+Lnv1SgeeUP2tIYVky6K37Ori0gkf5pnnLi19K9RkSqCIHm7bR05jhJG Jije8cYKcNEi/N3OLfLDib1ULTVFKveHFEy/25j+RrW25uZQIGjGxZZHGniqiJ1tq6gT lFwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702456845; x=1703061645; 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=WN6+IbHUwsDj2Mp0byBMbFLcPXljf01zSOzdPY+DU7c=; b=Qtp7HOV5sIIBCrkTDxt3I50GeeY6F1Y55rWaYYTTl3o40iwhlpdSWf43eMyDww0b2L WF8ckAsFIqN/yhmwoGR4lZGmaNWA9qCVcD6PQeuXbRQYwFHMOy53N2SGbnYFzUMLOvbz ppxodfZfxAVjkGS2wj2UW5esar8jyu/bvcVdW2XbGd+2v+fxSirlaY4zVvmUX2rYYlK1 Qor9/l2Z+Z2j0ijT7rpeuKZ3YKV46ZMwcR0m0qOKilNj2dq6bMGob58LfoWpqB9n6rcx MEisuAqV+2zKDtHTbbfAnlmPWIUY9ZlFxUr/5QuVEINPrM+klbdvp/vuX6KyEcFPRBA5 IOTA== X-Gm-Message-State: AOJu0YyDUDO2R6LKCT3pIqF0WcSgLaXP2cALtiuYZFhQar/RTMkaaY7y tgEmm14gYDhe6cmdOmoGa/6UoencWOss+cmnZl6h/BFYWSS9UjSfSxRYaNzN0zYdwm19XDITFjZ +KQJeARYRCKDLeH4AMUTOYYl/0oCEDcltAvwbTDkIrqezjC1utGO9DTXEyx5AHF2b2vzPKZg9Pd 0= X-Google-Smtp-Source: AGHT+IFpMEe1QleOIzYlmYbSHqhNIh05XJ6XpgT4sJ+3DPfuCuPFnd7Pcxt1uJoIQCCBm5n+ozuTWoGl X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a81:fe04:0:b0:5d9:712e:202b with SMTP id j4-20020a81fe04000000b005d9712e202bmr63020ywn.6.1702456844985; Wed, 13 Dec 2023 00:40:44 -0800 (PST) Date: Wed, 13 Dec 2023 09:40:28 +0100 In-Reply-To: <20231213084024.2367360-9-ardb@google.com> Mime-Version: 1.0 References: <20231213084024.2367360-9-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=3343; i=ardb@kernel.org; h=from:subject; bh=5iAh2YabWlLS7lJYeNG7SghkjjhrswiK2tPdvB6wvio=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIbUy9/dcc+abs9V+nN7jr7lgQl7Tl12bW3fekbyiwb3f6 u60ep2kjlIWBjEOBlkxRRaB2X/f7Tw9UarWeZYszBxWJpAhDFycAjCR/6cYGVbOsGdnWfX87Ysj y0Msitvlu76d/6twSkrscXBieGLW6iiGf0p+9y56FPdxdHCenRUeOWeS25RVn/UtmfuOdl94GLa 7hhsA X-Mailer: git-send-email 2.43.0.472.g3155946c3a-goog Message-ID: <20231213084024.2367360-12-ardb@google.com> Subject: [PATCH v7 3/7] arm64: ptdump: Allow all region boundaries to be defined at boot time From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20231213_004046_624382_DA817C15 X-CRM114-Status: GOOD ( 13.52 ) 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 Rework the way the address_markers array is populated so that we can tolerate values that are not compile time constants generally, rather than keeping track manually of the array indexes in question, and poking new values into them manually. This will be needed for VMALLOC_END, which will cease to be a compile time constant after a subsequent patch. Acked-by: Mark Rutland Signed-off-by: Ard Biesheuvel --- arch/arm64/mm/ptdump.c | 54 ++++++++------------ 1 file changed, 22 insertions(+), 32 deletions(-) diff --git a/arch/arm64/mm/ptdump.c b/arch/arm64/mm/ptdump.c index a929b5a321db..66ccb8d6997e 100644 --- a/arch/arm64/mm/ptdump.c +++ b/arch/arm64/mm/ptdump.c @@ -26,34 +26,6 @@ #include -enum address_markers_idx { - PAGE_OFFSET_NR = 0, - PAGE_END_NR, -#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) - KASAN_START_NR, -#endif -}; - -static struct addr_marker address_markers[] = { - { PAGE_OFFSET, "Linear Mapping start" }, - { 0 /* PAGE_END */, "Linear Mapping end" }, -#if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) - { 0 /* KASAN_SHADOW_START */, "Kasan shadow start" }, - { KASAN_SHADOW_END, "Kasan shadow end" }, -#endif - { MODULES_VADDR, "Modules start" }, - { MODULES_END, "Modules end" }, - { VMALLOC_START, "vmalloc() area" }, - { VMALLOC_END, "vmalloc() end" }, - { VMEMMAP_START, "vmemmap start" }, - { VMEMMAP_END, "vmemmap end" }, - { PCI_IO_START, "PCI I/O start" }, - { PCI_IO_END, "PCI I/O end" }, - { FIXADDR_TOT_START, "Fixmap start" }, - { FIXADDR_TOP, "Fixmap end" }, - { -1, NULL }, -}; - #define pt_dump_seq_printf(m, fmt, args...) \ ({ \ if (m) \ @@ -339,9 +311,8 @@ static void __init ptdump_initialize(void) pg_level[i].mask |= pg_level[i].bits[j].mask; } -static struct ptdump_info kernel_ptdump_info = { +static struct ptdump_info kernel_ptdump_info __ro_after_init = { .mm = &init_mm, - .markers = address_markers, .base_addr = PAGE_OFFSET, }; @@ -375,10 +346,29 @@ void ptdump_check_wx(void) static int __init ptdump_init(void) { - address_markers[PAGE_END_NR].start_address = PAGE_END; + struct addr_marker m[] = { + { PAGE_OFFSET, "Linear Mapping start" }, + { PAGE_END, "Linear Mapping end" }, #if defined(CONFIG_KASAN_GENERIC) || defined(CONFIG_KASAN_SW_TAGS) - address_markers[KASAN_START_NR].start_address = KASAN_SHADOW_START; + { KASAN_SHADOW_START, "Kasan shadow start" }, + { KASAN_SHADOW_END, "Kasan shadow end" }, #endif + { MODULES_VADDR, "Modules start" }, + { MODULES_END, "Modules end" }, + { VMALLOC_START, "vmalloc() area" }, + { VMALLOC_END, "vmalloc() end" }, + { VMEMMAP_START, "vmemmap start" }, + { VMEMMAP_END, "vmemmap end" }, + { PCI_IO_START, "PCI I/O start" }, + { PCI_IO_END, "PCI I/O end" }, + { FIXADDR_TOT_START, "Fixmap start" }, + { FIXADDR_TOP, "Fixmap end" }, + { -1, NULL }, + }; + static struct addr_marker address_markers[ARRAY_SIZE(m)] __ro_after_init; + + kernel_ptdump_info.markers = memcpy(address_markers, m, sizeof(m)); + ptdump_initialize(); ptdump_debugfs_register(&kernel_ptdump_info, "kernel_page_tables"); return 0;