Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1102432pxf; Thu, 8 Apr 2021 23:18:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxOUeK/hEFfnP2TRAQYbJ1dcMpP2NN1nvEnfYWJjso0vLTqTdrGxVId+1qbi/1l0KzRAIbL X-Received: by 2002:a17:902:bf07:b029:e7:137c:2e25 with SMTP id bi7-20020a170902bf07b02900e7137c2e25mr11199989plb.67.1617949132322; Thu, 08 Apr 2021 23:18:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617949132; cv=none; d=google.com; s=arc-20160816; b=Kgz3S16Ex37aWAYZ9Z6Ps6KaNDeLtc5M2ZO0Etjf6SPAskwyPkXa1OwjNPpsylTdZb 2JRtdMI9Ldx1GAdYZvH9SSlxRXLvCpAHLXgAvTX9mYUkXjvgF7aSlSvDaDkw/2bFM63p 0aMTrwMHM2N54TGVIedW9h4gg9w1Flx7fUG2RRogKT5NYAOTo6XRYNAmMvqTexTgU47x HNZFS7KIIPnh1tCs19U+XATJdrxjf9vKq/PKOLOvhrllf6kD4Eo+DOSLfM+LXg2TdXd/ xFM28MkFWfECSJWltF1cX02+jxOZQoDLWpSIfYXVEiN2i3Z+xIws+X3e/d9FxXRL+DkV 5i5w== 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=c3//rs9raTL1E6Yht8xVFnyUTlhr9YA+9sNuKmAZ8vT02WSPMWBZPLhvnGDm8OZryT KvU4+TJypxiRz2g/Mml0hfjO6U/PNln76b4Ekf4uvR2Fhfy5/zGXkGGZ1ADwhFKK53hU a0udjxgsLJXm4zc227HpNQ1XA8Okz4W/PEHDRR3+oXCXdPfM6Zl0kGSaknARVbdkHS2Y Hyxmli8PEwxIUdk2+eopcYGRvl4CE/wg5yZbbRyjlDl56JvEk/mYtMZHoDppdEVUrtfr ErzKbLNun4vEiVJrtYx8ed6edH1WfRvK5zk7pVQOAGGA53W8ja/Vhz/fhUU5iHhqP9P+ Sxyw== 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 z22si2198259pfc.159.2021.04.08.23.18.32; Thu, 08 Apr 2021 23:18:52 -0700 (PDT) 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 S233384AbhDIGRm (ORCPT + 99 others); Fri, 9 Apr 2021 02:17:42 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:54453 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233381AbhDIGRl (ORCPT ); Fri, 9 Apr 2021 02:17:41 -0400 X-Originating-IP: 81.185.169.105 Received: from localhost.localdomain (105.169.185.81.rev.sfr.net [81.185.169.105]) (Authenticated sender: alex@ghiti.fr) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id D86D3E0003; Fri, 9 Apr 2021 06:17:23 +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 v4 2/3] Documentation: riscv: Add documentation that describes the VM layout Date: Fri, 9 Apr 2021 02:14:59 -0400 Message-Id: <20210409061500.14673-3-alex@ghiti.fr> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210409061500.14673-1-alex@ghiti.fr> References: <20210409061500.14673-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