Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1912511pxf; Sat, 13 Mar 2021 01:30:24 -0800 (PST) X-Google-Smtp-Source: ABdhPJw0BpbOUvDBCLwX1nVzCs8eBnLmL1itrf+0t3L73VITNRcw5Unk9T3EHZtopisxJQKuh3vn X-Received: by 2002:a17:906:3882:: with SMTP id q2mr12935303ejd.540.1615627824006; Sat, 13 Mar 2021 01:30:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1615627823; cv=none; d=google.com; s=arc-20160816; b=aV556VCVp9rfQCQ1afzd7GK/ktbjlpBnZ9yjccQBwFLIyJavbTwIZcCI06B/PbShAB wQ0XjmQmT4G57mIT292aCLoiIe9FA9wZqHkzPCGC+YgzXGPLz+HmziuPzQel3lzF/PZ1 1/A6MPGYmUbFFTg1hDG2sILNKRmWel7xQ0XbYLij3DfxJk6HOlHs+hNVmjSM1oj0MSO2 GLA/cNqy4WM924zO28lqGC0yWhjxKGxZGQcaMwf/d8Pr+diJBC1DCTCpXA+nkXeib5/8 K7efIvO8ZiuXgv/lF3d6wpPd8eucTWXf8dNkIRraSRV+uxzWrZ8XL5fo0zUTpB7IZrUs 1Zhg== 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=trp6Rxs2WjewyF2uskwNVq/QQ2VALWVjWJFlXG2JseIlittqafnPJkqb99kCkXkYIV a9Bcv/fkNbvqGgnz8aZix5y6ROIGHitoaGoAyy92pNpki3Ii3g+54HG2WNuPhnHCFTTM yTkkeJUKke0gPqHAV/mh64LEPFFmVThHLu0whAWaD2sVryQRyVh3TGdgSHK37hyvi9ZZ JaVwMRFZzwwzvWLKg1IPiU7Ym5eKyaxezy8zKrewe4kd8fh1qhiDJmr0WK2JvdFxbfNz rYxFNh+8TDnqyGjrqkTB6RXf4KsYnR/4YhMGb7crb1tD6TuwEo+m5lPEBWsM9DuLBRsK XRyA== 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 c23si6221624edv.312.2021.03.13.01.30.01; Sat, 13 Mar 2021 01:30:23 -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 S230309AbhCMJ1w (ORCPT + 99 others); Sat, 13 Mar 2021 04:27:52 -0500 Received: from relay13.mail.gandi.net ([217.70.178.233]:62157 "EHLO relay13.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233011AbhCMJ1Y (ORCPT ); Sat, 13 Mar 2021 04:27:24 -0500 X-Greylist: delayed 2530 seconds by postgrey-1.27 at vger.kernel.org; Sat, 13 Mar 2021 04:27:23 EST 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 14B0980004; Sat, 13 Mar 2021 09:27:20 +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 v2 2/3] Documentation: riscv: Add documentation that describes the VM layout Date: Sat, 13 Mar 2021 04:25:08 -0500 Message-Id: <20210313092509.4918-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210313092509.4918-1-alex@ghiti.fr> References: <20210313092509.4918-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