Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp2515951pxf; Sun, 14 Mar 2021 01:16:43 -0800 (PST) X-Google-Smtp-Source: ABdhPJzNQwV4qdHCatfCxowFUiyTNSii6rDC9FfvMvkgzbBxtAJC71RKETi7qHzSeV9+wQLVB5BO X-Received: by 2002:a17:906:aada:: with SMTP id kt26mr17317359ejb.137.1615713402996; Sun, 14 Mar 2021 01:16:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615713402; cv=none; d=google.com; s=arc-20160816; b=tteGN4iZC4tH2obhKGF/RKHZKF+7vQMI6e9sQRsh5XRAW5RhAEZO2DEIVz5CDCTR91 5hPBvZaWyo+LvAwGa2JGVLxCxt/XcrGCX8XFJuam3CVtgVDH2cegZjYBbp87yWXZLkZh /OfIgmoQK3seRWSB4aad7TMZnfEha2v9of89ySn+SFpqtTDWslZpA0IVYez8a39mBRp5 nS1iDwBHIqs1Y34WtGppHW/C3k64vC5SeeLO4y9nelZk65WZIXtqsDEyv3H0c2JXWiq+ WxLnP8DwtySAGxRaYIPJIgelWx/dQQSUaq1+9Jeh4xRnM+vVR6B1EejM4SN51P5Vdygb A5sw== 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; bh=WFcLtBl6RmKjsIRqwG0zx8sBRO6mPYJiXhHMrLe6GlE=; b=C8aeia/Zv28Wt1LO4yima7zMiF3KR38wNmb2EUKDgNKCPz0vokAmYiGszfQmDiz1sK jZc/7iJpUk9PgvREwYKwpU3fpuLlIJQ7UqPR4Km+ZBXcmuqknMNnj83bxSH2SJ8jW8jn GbNB85uv2ApQyhwc818t5h9p9Kddc5JLHrqovFdwSCjKdHQEc3j6O9w2kQcT+Izd4jgR 7fI0Rk9zi99nAz9Nm1Bl4hG+oSzGP/Cio94jvV1wCjY6DTIrGdX50FX9kFvQsgeya4nJ OBSTG1l6bD0u1T8XTqVKhzTVJzCr0JqyO7kDBgipT1DD7VT1Shcod2ztjL0DFaKZqgXw Ay8A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t8si8261317ejj.661.2021.03.14.01.16.20; Sun, 14 Mar 2021 01:16:42 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235080AbhCNJMx (ORCPT + 99 others); Sun, 14 Mar 2021 05:12:53 -0400 Received: from relay13.mail.gandi.net ([217.70.178.233]:24365 "EHLO relay13.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234362AbhCNJMq (ORCPT ); Sun, 14 Mar 2021 05:12:46 -0400 X-Greylist: delayed 85522 seconds by postgrey-1.27 at vger.kernel.org; Sun, 14 Mar 2021 05:12:45 EDT Received: from debian.home (lfbn-lyo-1-457-219.w2-7.abo.wanadoo.fr [2.7.49.219]) (Authenticated sender: alex@ghiti.fr) by relay13.mail.gandi.net (Postfix) with ESMTPSA id 990DC8000D; Sun, 14 Mar 2021 09:12:41 +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 Subject: [PATCH v3 2/3] Documentation: riscv: Add documentation that describes the VM layout Date: Sun, 14 Mar 2021 05:10:26 -0400 Message-Id: <20210314091027.21592-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210314091027.21592-1-alex@ghiti.fr> References: <20210314091027.21592-1-alex@ghiti.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This new document presents the RISC-V virtual memory layout and is based one the x86 one: it describes the different limits of the different regions of the virtual address space. Signed-off-by: Alexandre Ghiti --- Documentation/riscv/index.rst | 1 + Documentation/riscv/vm-layout.rst | 63 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 Documentation/riscv/vm-layout.rst diff --git a/Documentation/riscv/index.rst b/Documentation/riscv/index.rst index 6e6e39482502..ea915c196048 100644 --- a/Documentation/riscv/index.rst +++ b/Documentation/riscv/index.rst @@ -6,6 +6,7 @@ RISC-V architecture :maxdepth: 1 boot-image-header + vm-layout pmu patch-acceptance diff --git a/Documentation/riscv/vm-layout.rst b/Documentation/riscv/vm-layout.rst new file mode 100644 index 000000000000..329d32098af4 --- /dev/null +++ b/Documentation/riscv/vm-layout.rst @@ -0,0 +1,63 @@ +.. SPDX-License-Identifier: GPL-2.0 + +===================================== +Virtual Memory Layout on RISC-V Linux +===================================== + +:Author: Alexandre Ghiti +:Date: 12 February 2021 + +This document describes the virtual memory layout used by the RISC-V Linux +Kernel. + +RISC-V Linux Kernel 32bit +========================= + +RISC-V Linux Kernel SV32 +------------------------ + +TODO + +RISC-V Linux Kernel 64bit +========================= + +The RISC-V privileged architecture document states that the 64bit addresses +"must have bits 63–48 all equal to bit 47, or else a page-fault exception will +occur.": that splits the virtual address space into 2 halves separated by a very +big hole, the lower half is where the userspace resides, the upper half is where +the RISC-V Linux Kernel resides. + +RISC-V Linux Kernel SV39 +------------------------ + +:: + + ======================================================================================================================== + Start addr | Offset | End addr | Size | VM area description + ======================================================================================================================== + | | | | + 0000000000000000 | 0 | 0000003fffffffff | 256 GB | user-space virtual memory, different per mm + __________________|____________|__________________|_________|___________________________________________________________ + | | | | + 0000004000000000 | +256 GB | ffffffbfffffffff | ~16M TB | ... huge, almost 64 bits wide hole of non-canonical + | | | | virtual memory addresses up to the -256 GB + | | | | starting offset of kernel mappings. + __________________|____________|__________________|_________|___________________________________________________________ + | + | Kernel-space virtual memory, shared between all processes: + ____________________________________________________________|___________________________________________________________ + | | | | + ffffffc000000000 | -256 GB | ffffffc7ffffffff | 32 GB | kasan + ffffffcefee00000 | -196 GB | ffffffcefeffffff | 2 MB | fixmap + ffffffceff000000 | -196 GB | ffffffceffffffff | 16 MB | PCI io + ffffffcf00000000 | -196 GB | ffffffcfffffffff | 4 GB | vmemmap + ffffffd000000000 | -192 GB | ffffffdfffffffff | 64 GB | vmalloc/ioremap space + ffffffe000000000 | -128 GB | ffffffff7fffffff | 124 GB | direct mapping of all physical memory + __________________|____________|__________________|_________|____________________________________________________________ + | + | + ____________________________________________________________|____________________________________________________________ + | | | | + ffffffff00000000 | -4 GB | ffffffff7fffffff | 2 GB | modules + ffffffff80000000 | -2 GB | ffffffffffffffff | 2 GB | kernel, BPF + __________________|____________|__________________|_________|____________________________________________________________ -- 2.20.1