Received: by 2002:a05:6359:6284:b0:131:369:b2a3 with SMTP id se4csp5059941rwb; Tue, 8 Aug 2023 20:04:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IElBZms/rIc5RpCnNNDVCQOAiIh06L9aE/36JOyVgv3gt0VG8oLN/XEAdhq9yNLDeOVmVV0 X-Received: by 2002:a05:620a:4501:b0:76c:9610:95cc with SMTP id t1-20020a05620a450100b0076c961095ccmr2255905qkp.33.1691550250873; Tue, 08 Aug 2023 20:04:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691550250; cv=none; d=google.com; s=arc-20160816; b=0hDH+cW7fvGaRmiW2iDc3h35I9xcs5U3bHfKJxRKyIStLBEH5ATKYVXIs1g/7ifLWU ioBRLH+XKpQMBGe4a8r3mxXW3c+V9aFYNCzRBo+CMmBGaXcD8Wjfecw5NIg62NzT/m3C 3AyIyyfhWbE9AJ4zXzEw+7/UWtgpZznGdusHr35C5PndQ2Z8WJRH4wT/7pPHcff2TnK/ EMJJbZauptseGUc2TI0ocPxSa+TtlWvfIUZnrm6CzBRkeN6hhT60I690veOkJDVyc1// 6gV+n1757uaCfIBQG9D61GGyauvElaBAGzDJEei1cpAeBp0qUIZUQbPwqrxUza9VGvda /+1w== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=UtoNrqFUKslO70ZXL4UNEXOjKDOXZBueUpk6sT8KlRA=; fh=7AUu9WDHec3ojD+PBWP8kj3GITT/pOnwiCBaYopXpyU=; b=LxdCWwkeQwqiT9L5D3bB1vqu2TduW/tWcK/Yzx/9372qs08eg73Y4kOH9KIvEflzzA Np5luRib+2w2HFMWbrpqxuK3wXNbCwXgO++6BAVCVSh3xwoAEeFm3+P6zmE+qOpEQneU PhouoCF4g5iCxfF/YinGQ+TbqUFWHgPWvBhJdhytvNvz5lfbdGM2uSwBpyrg362bnFyA 0ipfhdY4Ag36WiOCq3ebSTM2JgIDF7zNI9Fyerb+lh3pYbxhwATz+WTs/SPVwb0IAV53 v2DXAdw5j0UDGS3Qoll0vN9yUsKWTYQbHRx6Y59qZMsek1PJAmgJIOK6gIHIbozsoSRe RqUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=Stgyxger; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ch6-20020a056a00288600b0068263da2c43si8172590pfb.392.2023.08.08.20.03.58; Tue, 08 Aug 2023 20:04:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=Stgyxger; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231204AbjHIBxJ (ORCPT + 99 others); Tue, 8 Aug 2023 21:53:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231185AbjHIBxI (ORCPT ); Tue, 8 Aug 2023 21:53:08 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E934E1BD3 for ; Tue, 8 Aug 2023 18:53:06 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-1bc7b25c699so13976125ad.1 for ; Tue, 08 Aug 2023 18:53:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1691545986; x=1692150786; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=UtoNrqFUKslO70ZXL4UNEXOjKDOXZBueUpk6sT8KlRA=; b=StgyxgerM/v48ko0wif1IouoNrGfeAt0DQ9gH4XXOfXEvWdda9w/lRT/W0WLrYHw8Y HCI7mRrtJwdyITpgruffl82O3nc4neJFoCZmYn2rwc6n5b5kkyueu/OV3qwN5pQNXVjl gD8c72+AoAbNzG6wi0yhhdTdeZvrG/v/2GNuSusbIxt4H5XAhxp95/5j4s6pBgDkjjgj F/RYJYuDwMyJLNFUBnuiYtOePN6sMW+75O0ck7p0+zzR2FqrHGhUp0KePrWL3VR1nPHt GqWhS4Dsi1mH1CKzHnPDOBNf/lzH42O7nktuH/HgyW4DJE8IY/sa6GNje/dgSwG+MxS+ CteQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691545986; x=1692150786; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UtoNrqFUKslO70ZXL4UNEXOjKDOXZBueUpk6sT8KlRA=; b=d0LN4/Zh6h1sPhiYIYIzKyI5OuqA+kd2lTLxgmz0y89+YMiuJVvvWVUeSgJrR2oBec MhTfR/YDz9hJdO6Dd+lPFvHQxh6TxmlK4OZrBjEJuUkAkZ3E/z/4hdHpkAHq9pU1f4ln 2b81RzFB5QfNBs5C8+W/chOZJZMt5YVNKZ77t5yCWLGdmAHrqsnbPBbkGyjivV14yp9/ 1SiS9eswN384PuDdZsFAqCw3ocJxoWao+PCGPR9mfaDCaAtD+o3CfKexQsVb6acR7W7B OujrteQHJxuZxrinxR51dL+1FH+e5/MY2Tzu0evGwGIliCmB3BbsPmF+2gig5iaXoZvJ BzBw== X-Gm-Message-State: AOJu0YzuKPFbiBEpDONqI/7pzFK5Qy77+aLsVsexz0PoRVSX8ahEyNsu 6W4zuaBtxDTsBByfZpw4NSbZGQ== X-Received: by 2002:a17:903:2351:b0:1b8:9ecd:8b86 with SMTP id c17-20020a170903235100b001b89ecd8b86mr1790925plh.5.1691545986411; Tue, 08 Aug 2023 18:53:06 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id bj7-20020a170902850700b001b87bedcc6fsm9657591plb.93.2023.08.08.18.53.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Aug 2023 18:53:05 -0700 (PDT) From: Charlie Jenkins To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: charlie@rivosinc.com, conor@kernel.org, paul.walmsley@sifive.com, palmer@rivosinc.com, aou@eecs.berkeley.edu, anup@brainfault.org, konstantin@linuxfoundation.org, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, mick@ics.forth.gr, jrtc27@jrtc27.com, rdunlap@infradead.org, alexghiti@rivosinc.com Subject: [PATCH v9 0/4] RISC-V: mm: Make SV48 the default address space Date: Tue, 8 Aug 2023 18:51:06 -0700 Message-Id: <20230809015110.3290774-1-charlie@rivosinc.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Make sv48 the default address space for mmap as some applications currently depend on this assumption. Users can now select a desired address space using a non-zero hint address to mmap. Previously, requesting the default address space from mmap by passing zero as the hint address would result in using the largest address space possible. Some applications depend on empty bits in the virtual address space, like Go and Java, so this patch provides more flexibility for application developers. -Charlie --- v9: - Raise the mmap_end default to STACK_TOP_MAX to allow the address space to grow beyond the default of sv48 on sv57 machines as suggested by Alexandre - Some of the mmap macros had unnecessary conditionals that I have removed v8: - Fix RV32 and the RV32 compat mode of RV64 (suggested by Conor) - Extract out addr and base from the mmap macros (suggested by Alexandre) v7: - Changing RLIMIT_STACK inside of an executing program does not trigger arch_pick_mmap_layout(), so rewrite tests to change RLIMIT_STACK from a script before executing tests. RLIMIT_STACK of infinity forces bottomup mmap allocation. - Make arch_get_mmap_base macro more readible by extracting out the rnd calculation. - Use MMAP_MIN_VA_BITS in TASK_UNMAPPED_BASE to support case when mmap attempts to allocate address smaller than DEFAULT_MAP_WINDOW. - Fix incorrect wording in documentation. v6: - Rebase onto the correct base v5: - Minor wording change in documentation - Change some parenthesis in arch_get_mmap_ macros - Added case for addr==0 in arch_get_mmap_ because without this, programs would crash if RLIMIT_STACK was modified before executing the program. This was tested using the libhugetlbfs tests. v4: - Split testcases/document patch into test cases, in-code documentation, and formal documentation patches - Modified the mmap_base macro to be more legible and better represent memory layout - Fixed documentation to better reflect the implmentation - Renamed DEFAULT_VA_BITS to MMAP_VA_BITS - Added additional test case for rlimit changes --- Charlie Jenkins (4): RISC-V: mm: Restrict address space for sv39,sv48,sv57 RISC-V: mm: Add tests for RISC-V mm RISC-V: mm: Update pgtable comment documentation RISC-V: mm: Document mmap changes Documentation/riscv/vm-layout.rst | 22 +++++++ arch/riscv/include/asm/elf.h | 2 +- arch/riscv/include/asm/pgtable.h | 29 +++++++-- arch/riscv/include/asm/processor.h | 52 +++++++++++++-- tools/testing/selftests/riscv/Makefile | 2 +- tools/testing/selftests/riscv/mm/.gitignore | 2 + tools/testing/selftests/riscv/mm/Makefile | 15 +++++ .../riscv/mm/testcases/mmap_bottomup.c | 35 ++++++++++ .../riscv/mm/testcases/mmap_default.c | 35 ++++++++++ .../selftests/riscv/mm/testcases/mmap_test.h | 64 +++++++++++++++++++ .../selftests/riscv/mm/testcases/run_mmap.sh | 12 ++++ 11 files changed, 258 insertions(+), 12 deletions(-) create mode 100644 tools/testing/selftests/riscv/mm/.gitignore create mode 100644 tools/testing/selftests/riscv/mm/Makefile create mode 100644 tools/testing/selftests/riscv/mm/testcases/mmap_bottomup.c create mode 100644 tools/testing/selftests/riscv/mm/testcases/mmap_default.c create mode 100644 tools/testing/selftests/riscv/mm/testcases/mmap_test.h create mode 100755 tools/testing/selftests/riscv/mm/testcases/run_mmap.sh -- 2.34.1