From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86F9CC433E0 for ; Thu, 25 Feb 2021 08:08:45 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 092D964EBA for ; Thu, 25 Feb 2021 08:08:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 092D964EBA Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ghiti.fr Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 788728D000A; Thu, 25 Feb 2021 03:08:44 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 75F8C8D0005; Thu, 25 Feb 2021 03:08:44 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 65DA58D000A; Thu, 25 Feb 2021 03:08:44 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0085.hostedemail.com [216.40.44.85]) by kanga.kvack.org (Postfix) with ESMTP id 4FF6F8D0005 for ; Thu, 25 Feb 2021 03:08:44 -0500 (EST) Received: from smtpin20.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 15C3EEFF4 for ; Thu, 25 Feb 2021 08:08:44 +0000 (UTC) X-FDA: 77856063768.20.EB4A849 Received: from relay12.mail.gandi.net (relay12.mail.gandi.net [217.70.178.232]) by imf19.hostedemail.com (Postfix) with ESMTP id 5290190009EA for ; Thu, 25 Feb 2021 08:08:39 +0000 (UTC) Received: from localhost.localdomain (35.161.185.81.rev.sfr.net [81.185.161.35]) (Authenticated sender: alex@ghiti.fr) by relay12.mail.gandi.net (Postfix) with ESMTPSA id D4AB9200006; Thu, 25 Feb 2021 08:08:34 +0000 (UTC) From: Alexandre Ghiti To: Jonathan Corbet , Paul Walmsley , Palmer Dabbelt , Albert Ou , Arnd Bergmann , Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kasan-dev@googlegroups.com, linux-arch@vger.kernel.org, linux-mm@kvack.org Cc: Alexandre Ghiti , Anup Patel Subject: [PATCH 3/3] riscv: Prepare ptdump for vm layout dynamic addresses Date: Thu, 25 Feb 2021 03:04:53 -0500 Message-Id: <20210225080453.1314-4-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210225080453.1314-1-alex@ghiti.fr> References: <20210225080453.1314-1-alex@ghiti.fr> MIME-Version: 1.0 X-Stat-Signature: zo9wzgaxu5es16tdyna8nqk5akx16p7x X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 5290190009EA Received-SPF: none (ghiti.fr>: No applicable sender policy available) receiver=imf19; identity=mailfrom; envelope-from=""; helo=relay12.mail.gandi.net; client-ip=217.70.178.232 X-HE-DKIM-Result: none/none X-HE-Tag: 1614240519-313713 Content-Transfer-Encoding: quoted-printable 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: This is a preparatory patch for sv48 support that will introduce dynamic PAGE_OFFSET. Dynamic PAGE_OFFSET implies that all zones (vmalloc, vmemmap, fixaddr...) whose addresses depend on PAGE_OFFSET become dynamic and can't be used to statically initialize the array used by ptdump to identify the different zones of the vm layout. Signed-off-by: Alexandre Ghiti Reviewed-by: Anup Patel --- arch/riscv/mm/ptdump.c | 67 ++++++++++++++++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/arch/riscv/mm/ptdump.c b/arch/riscv/mm/ptdump.c index ace74dec7492..aa1b3bce61ab 100644 --- a/arch/riscv/mm/ptdump.c +++ b/arch/riscv/mm/ptdump.c @@ -58,29 +58,52 @@ struct ptd_mm_info { unsigned long end; }; =20 +enum address_markers_idx { +#ifdef CONFIG_KASAN + KASAN_SHADOW_START_NR, + KASAN_SHADOW_END_NR, +#endif + FIXMAP_START_NR, + FIXMAP_END_NR, + PCI_IO_START_NR, + PCI_IO_END_NR, +#ifdef CONFIG_SPARSEMEM_VMEMMAP + VMEMMAP_START_NR, + VMEMMAP_END_NR, +#endif + VMALLOC_START_NR, + VMALLOC_END_NR, + PAGE_OFFSET_NR, + MODULES_MAPPING_NR, + KERNEL_MAPPING_NR, + END_OF_SPACE_NR +}; + static struct addr_marker address_markers[] =3D { #ifdef CONFIG_KASAN - {KASAN_SHADOW_START, "Kasan shadow start"}, - {KASAN_SHADOW_END, "Kasan shadow end"}, + {0, "Kasan shadow start"}, + {0, "Kasan shadow end"}, #endif - {FIXADDR_START, "Fixmap start"}, - {FIXADDR_TOP, "Fixmap end"}, - {PCI_IO_START, "PCI I/O start"}, - {PCI_IO_END, "PCI I/O end"}, + {0, "Fixmap start"}, + {0, "Fixmap end"}, + {0, "PCI I/O start"}, + {0, "PCI I/O end"}, #ifdef CONFIG_SPARSEMEM_VMEMMAP - {VMEMMAP_START, "vmemmap start"}, - {VMEMMAP_END, "vmemmap end"}, + {0, "vmemmap start"}, + {0, "vmemmap end"}, #endif - {VMALLOC_START, "vmalloc() area"}, - {VMALLOC_END, "vmalloc() end"}, - {PAGE_OFFSET, "Linear mapping"}, + {0, "vmalloc() area"}, + {0, "vmalloc() end"}, + {0, "Linear mapping"}, + {0, "Modules mapping"}, + {0, "Kernel mapping (kernel, BPF)"}, {-1, NULL}, }; =20 static struct ptd_mm_info kernel_ptd_info =3D { .mm =3D &init_mm, .markers =3D address_markers, - .base_addr =3D KERN_VIRT_START, + .base_addr =3D 0, .end =3D ULONG_MAX, }; =20 @@ -335,6 +358,26 @@ static int ptdump_init(void) { unsigned int i, j; =20 +#ifdef CONFIG_KASAN + address_markers[KASAN_SHADOW_START_NR].start_address =3D KASAN_SHADOW_S= TART; + address_markers[KASAN_SHADOW_END_NR].start_address =3D KASAN_SHADOW_END= ; +#endif + address_markers[FIXMAP_START_NR].start_address =3D FIXADDR_START; + address_markers[FIXMAP_END_NR].start_address =3D FIXADDR_TOP; + address_markers[PCI_IO_START_NR].start_address =3D PCI_IO_START; + address_markers[PCI_IO_END_NR].start_address =3D PCI_IO_END; +#ifdef CONFIG_SPARSEMEM_VMEMMAP + address_markers[VMEMMAP_START_NR].start_address =3D VMEMMAP_START; + address_markers[VMEMMAP_END_NR].start_address =3D VMEMMAP_END; +#endif + address_markers[VMALLOC_START_NR].start_address =3D VMALLOC_START; + address_markers[VMALLOC_END_NR].start_address =3D VMALLOC_END; + address_markers[PAGE_OFFSET_NR].start_address =3D PAGE_OFFSET; + address_markers[MODULES_MAPPING_NR].start_address =3D MODULES_VADDR; + address_markers[KERNEL_MAPPING_NR].start_address =3D kernel_virt_addr; + + kernel_ptd_info.base_addr =3D KERN_VIRT_START; + for (i =3D 0; i < ARRAY_SIZE(pg_level); i++) for (j =3D 0; j < ARRAY_SIZE(pte_bits); j++) pg_level[i].mask |=3D pte_bits[j].mask; --=20 2.20.1