From patchwork Wed Jul 26 16:45:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charlie Jenkins X-Patchwork-Id: 13328363 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C119C04A6A for ; Wed, 26 Jul 2023 16:46:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 06EEA6B007B; Wed, 26 Jul 2023 12:46:35 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 01F996B007D; Wed, 26 Jul 2023 12:46:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E50BD6B007E; Wed, 26 Jul 2023 12:46:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id D62AF6B007B for ; Wed, 26 Jul 2023 12:46:34 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 01984B29A1 for ; Wed, 26 Jul 2023 16:46:32 +0000 (UTC) X-FDA: 81054341466.04.60A6CA1 Received: from mail-pl1-f174.google.com (mail-pl1-f174.google.com [209.85.214.174]) by imf07.hostedemail.com (Postfix) with ESMTP id E409B40006 for ; Wed, 26 Jul 2023 16:46:30 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=VZu9MJSw; dmarc=none; spf=pass (imf07.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.174 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690389991; a=rsa-sha256; cv=none; b=k2GlO0Bj5gRErZS2rMqUOU7mnBomc/9ADuYD4iXC/V4+xhaigiL0+TGDiVlbjoD+IzfkrZ ZWMpcr4YSvaoptRcYvgliPTmjwnz2PXLkkhX0yO5C8T/67IHaa49fimIaD4fHR3ggSo9OE c1YurRDS8Gb/eOdj4TJ23gQnmcEG10w= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=VZu9MJSw; dmarc=none; spf=pass (imf07.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.174 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1690389991; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=taA43ETpLC9XelDxU6ZtNji2uVvqZo51XsvT9ZpAUOw=; b=6eMPwLjrYD8S0fCiQKzE1pTOxo7cSqP5HKU1Lzi7bYFvMTj8URZiy7niy4d676JXIBbPQ8 W7gEJatzoilKdWAt5yyRquWV5iKujeUTqcUwUE/47fU9lDaNb6BrOZY+XG0bqGqBEa/o18 rmAfw3ExYaBfAKAg5wRGsNcafHCoRDA= Received: by mail-pl1-f174.google.com with SMTP id d9443c01a7336-1bbbbb77b38so13446265ad.3 for ; Wed, 26 Jul 2023 09:46:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1690389989; x=1690994789; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=taA43ETpLC9XelDxU6ZtNji2uVvqZo51XsvT9ZpAUOw=; b=VZu9MJSwZY921d+CgkyRoxwMZ9iNSRGcNwXdvnISwMB6ZrvGY+S7PdYNnCTN09Ml// 9OT/zZSv24aoMTT4p8YMqfNMaKALTuecJg7AAfyMvLYvUtCBWMHD8HmcPWG3A6DhHADY 9zndIIv6HUn5DPGDsaK9svaN+56XhvqriI612ahHA8eL4BMQerz9GE7C7DWqrlrqyhrD 2oFORFcvVABTahHZpXH/yATcrYwkLWjanAhlDeD98fff8tZGesgkvYndd+KcVx+PyB7n x3UZ7zYxPGWO/u8h37KPbndip2DXWlV/eE+HdzkbisNcgPAZzhTJsRw9oxmYcPU+eeIu 4kFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690389989; x=1690994789; 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=taA43ETpLC9XelDxU6ZtNji2uVvqZo51XsvT9ZpAUOw=; b=iMdHu2DNvJTHxBDq8mZ/FrKopbS5ITi7oCF68gQtRL+1W9KsP0pWIvZcE5iuZ2mr0R QslNgaAYKtjzLOzgcfuIeO3ufgQAXAT9HItcdfUekzQdDPxmcwTcwN+4Ho31ikvSUndK t+dEETDaMTxMIUk0X+1EF6jkighIEHWdCAgOel/JzMm2lyQaPjV3LD2Sg996DhSbrmFM Eae5iKKe+82TcW+ITXUZ82CTlahyXicxJeeLaBm+GKXbMhAycI6HcZBiOw3ON2ihh+kM zkw2y6kugo/VcJljp/ScwU5Oqn72K+/6cMZ4WDdpQATaqufdwn6acdRbtMISnFSZLHtE qUyQ== X-Gm-Message-State: ABy/qLYIG9BU3Z+ZZ2Fo4X4DXBGFAWItq+BXZnxOhfZdDgiU5AyS0MFQ uuIszYNc7pHWoGu/FKVFCxUP3g== X-Google-Smtp-Source: APBJJlH6j0Ww1otYztDyN7R8yPQEX4DMdjE4EaTSbvjzsuEj6+yeD2BZI9v3UPAjEZlsbhq1mBWpeg== X-Received: by 2002:a17:903:2308:b0:1b8:aef2:773e with SMTP id d8-20020a170903230800b001b8aef2773emr2582222plh.46.1690389989599; Wed, 26 Jul 2023 09:46:29 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id h5-20020a170902f54500b001bb6c5ff4edsm11628870plf.173.2023.07.26.09.46.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Jul 2023 09:46:29 -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 v7 0/4] RISC-V: mm: Make SV48 the default address space Date: Wed, 26 Jul 2023 09:45:54 -0700 Message-ID: <20230726164620.717288-1-charlie@rivosinc.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: E409B40006 X-Stat-Signature: gyf3qokyk684s4phizizfecenaeirp8a X-HE-Tag: 1690389990-279741 X-HE-Meta: U2FsdGVkX1/o5IgGvCRqZhfHbIbPfSDyC4XlRoZP8wvU9VmRhydGEtWxTWKN4nwx9JxOSYmIR2S1hwrk6myRuAa/Oj3/+NJJXoaRTEzrTg+KBXdnB63EZ7DzXlg/KSLQ0eBOcDl6Zcol1MZw3G6Ah+VjhRheIwG6w9OYvFUiIoHLPeoQikvHtOjqkfHI1+k2LzM4G8pDJ+5y3f6p7b+wnlSFeLVu/tOl0tz2EKp0cyeT6XYeqZ9guyXxZLyvxKeBwykBrn7PT1sFl0g11vSQIku1LKSyWkKWaavupgj1Q93fPgYGqlr50pB75zSmTTLcjsi+izf3PWIIEqrd3zrbU/JU7QmZuyoDkscF4U5/zgktptlW/OSGdB5L3sVVPUwzyA7Jeu9V1EjqcDDD4ieyBjKtNv7NsPdaiVs3i3hzq8lIJQS6QXRM7m0aMJWT9MAKB9ZzvpUOqvGSH1v3auwDc9/6lqIuev6RH1oxpnYHEZ47PI7oZBPNlUW8HLcmqTClHW/aqv0KJmCdOQlSoymvOYJJC5jx3h+zmm8UyzbnLfN3aZdPGrhtjlX8JBcBI9HU3K3M6/93AkydG4PAV4hwAXeWNwGL70eRRmniX7a5+N9H8TPeiIig6TvWcr4s61S8ZrCsM8AQjGaen6fK0UB8NCz77Zm1jyaktYY3dxYqzZbZaXdWzEHkXsUqtdwi85tdZKS0jd5BfmSsDm6kdB1Fq3dh8EfuhVIBiwATopHwQoSCtdL0XIrmdup2l0fKMQzhGFgAQ2vnqikTBHkEKusCjOqPKvxEqokn5ydtkeIYCxWewGxHdbaf9fc+QYpNYc83JhRrNOYzqvesmbLMtTDmtIyVtMiOkc0JmViFwVJXk68d1zoY1eq75oeUN/Cq1LAPTWbEHMXiVKDrrZRHZY75FTkGEOyUM0ZDbKr2RN4+HR0N6eISOhTjEFEBEiWr1Ry3XqYQOR+w2cTq/KrGVMx NwqGs76Q lT4P3sSyMjFgsBFhn7C/EE9n5umHHN+ULosjMjxj+WTdDntQNwgBZg+sNDwwuxBp1BtSUgwkHwLr8vtn+POjf3O1Kc1MpHQvrj/+hTk2LAf7Tk6qnaz7r3o0snaiJm54ypcSC+gtriZuuwQtkcgwzu/UWahTHHLtElGSujWDl1jonG/zVFNPzb6YK28tw2pXASrcY+B0lJ4aoLTEpp18P/wHPY+ohG7hK97GRXB8A3cD9mZ249Ctr+kHh/PaPeHC/T8CStAT17g4eEwLtjnRFK+vfusNWFBKtqXQrVhb0/azOjydc/zYYDAXfYdsTER30jb79lSbFKAa6H70rYuq59nfRyiKKd96qBkIFZq7A51SxMxtKiIv5YMjClDjMJ9InPR80ibJ0OW+X/74= 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: 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 --- 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 | 21 ++++-- arch/riscv/include/asm/processor.h | 47 ++++++++++++-- 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, 244 insertions(+), 13 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