From patchwork Thu Jul 27 21:26:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Charlie Jenkins X-Patchwork-Id: 13330780 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 40000EB64DD for ; Thu, 27 Jul 2023 21:26:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B43A66B0075; Thu, 27 Jul 2023 17:26:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AF60D6B0078; Thu, 27 Jul 2023 17:26:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9949E6B007B; Thu, 27 Jul 2023 17:26:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 8621C6B0075 for ; Thu, 27 Jul 2023 17:26:54 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 36CE8140660 for ; Thu, 27 Jul 2023 21:26:54 +0000 (UTC) X-FDA: 81058676748.20.EC52646 Received: from mail-pf1-f174.google.com (mail-pf1-f174.google.com [209.85.210.174]) by imf25.hostedemail.com (Postfix) with ESMTP id 5D365A000C for ; Thu, 27 Jul 2023 21:26:52 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b="UW/Zl61N"; dmarc=none; spf=pass (imf25.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.210.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=1690493212; 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=u1j+kMh0iOsH0JqfJ3WA4QtOF313IMeXkg3gc/f9dpg=; b=m76LvEbzImyLPHt5KFYs4o+UZ4+sGeSag/92+hWocxUDEWrBlEbEHUitnm4VHnvvt8Tjmw AEUhiC5MnuHX2UB0YajOZfpwZPUM02Mfy4HFnPqcCsE2TuHMLAHTUEawqJECvBfeWihYPb 80p+mW2oLuVumf2V9GZQ20fkhe4Uves= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b="UW/Zl61N"; dmarc=none; spf=pass (imf25.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.210.174 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1690493212; a=rsa-sha256; cv=none; b=a6YCoGjcoGiuJsYT07n0oFe4X5by9nqQRliQnGf0+Q4JU4jLB0XxrTStHH5jcPUNzuUlpP nd+A4VUqaLPeVKCJchOnKLBGi4635AUkE3cr+7tnnjCFjL/c202kONVppT3j509z8KsJYN SjRrFsa3ru8DaMhYbwm8tok+36CxtoY= Received: by mail-pf1-f174.google.com with SMTP id d2e1a72fcca58-686bea20652so1466362b3a.1 for ; Thu, 27 Jul 2023 14:26:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1690493211; x=1691098011; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=u1j+kMh0iOsH0JqfJ3WA4QtOF313IMeXkg3gc/f9dpg=; b=UW/Zl61NXORbuErLMYKrPm9BFy7QuUh39/eAy5ZU0tDpiY0EdHKcfvtC+GjtpmoDS8 UmDlC5OLbd58dgYVEmXHluzRe1t2fY8rL1HiaDUFiSJTNyiVKx7Yj/LsR1iXdWF2JcNt tnIjNEFLAtyVNtQnc5o/YyMDw8iqDLdEFxqRSU0Vz15wWVg7u5g7H6whC3n/cJHzTAky FzfPpDUZfB16CXzC3uQVY4b74zmqkbLxl/LvpVr/5df/t64hI95eiPpq/tX3SGZn8pXV wROKldHqphBhUMtg69MS22I/iovR/Qy3rcvDDNxH4lNhhgWxzukwhDjXh3ehAlzbnPa8 7Cyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690493211; x=1691098011; 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=u1j+kMh0iOsH0JqfJ3WA4QtOF313IMeXkg3gc/f9dpg=; b=TFgIsxQVTBpdfBP2Jli7VwhjNFT4en+FH1dP+wWWRBJVGQPXI/16Hmyq3KH2uTdb1y AhcT+gi2G1HXfR2OZE4KXi0yJxTGv4kqhRxlU3e7HTSnR8XlkUIwlKRFPbBN+OqhK8Zr wUdLpNsqez5jWp1FKVj2HcafYAJjx62N0BR98c+dYEHiM9NClB9NTScBj3/sr4V3wGoP dpmkb/REzTAPor4tF2+Tih8vknP0SKNadVWxLZn2i++LJl2zE0vExJc0BE1/IoE0egyU u+h0NVOkG6pxgcM6GicxPZ2/BroKPgJ/jMMyy5pAoG9N16py2pfUgl+8n4nOaGvzHXck AwaQ== X-Gm-Message-State: ABy/qLa6J09ObALx73zrta0vIEto3lNAX6TmVrAu85pvCWW2dc66gR65 XZNwN8j7mbNM/ptJ8jq+8JHA7Q== X-Google-Smtp-Source: APBJJlHqQrVV0xCK9fwk96H8JBXhaJwlU8jA71nZ4nPqPKjFylYfA9+6fmKC0mo2E6CfNC7prqLhUw== X-Received: by 2002:a05:6a20:2c98:b0:13b:ceea:6b50 with SMTP id g24-20020a056a202c9800b0013bceea6b50mr262249pzj.47.1690493211124; Thu, 27 Jul 2023 14:26:51 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id c5-20020aa78c05000000b00682562b1549sm1912312pfd.24.2023.07.27.14.26.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Jul 2023 14:26:50 -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 v8 0/4] RISC-V: mm: Make SV48 the default address space Date: Thu, 27 Jul 2023 14:26:25 -0700 Message-ID: <20230727212647.4182407-1-charlie@rivosinc.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 X-Rspamd-Queue-Id: 5D365A000C X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: sust7e5mng451nrfpgp75in7h7tbao76 X-HE-Tag: 1690493212-896027 X-HE-Meta: U2FsdGVkX1/Ezn6AlOm7oV+98kTmiopQhPpamfbBfJmMiDfio8P5Gm8fr1F9h+WPsiCwXVNEN4pgPGw+zC1ZOoUzafKo5bZ6KeIBHo+I8JAhuGFDUNIJAQC2QX5fVre+SCrjekwCjpKKPmyt41ETNM/o6QPYW9nKrfZXviqPhqoUJN2cOG4kTQYGFDoOOP7Ti412UJiUP2mGm/qfI8lLtvDFK1iW0ET6mgo7IXlTsIw7eYxA3zRVM5u4F5pARbIHq4JKw1k+BaGiaTqQeWY8cAJKrstolWCXHvQqA9ket9VLFYTiQb/e7v1kH8jyJXhmbLJJMqPhh0e36ebV2G15J702p0qp6hu7mdrfCV95A05uip3ct8D3jYxV0tlPcEaYzKg+DmQVB20I0Q++H1AdCoq+VtWibiWsmryXzl5BQQmm2Nlj7Xl3vY5HmLBk7yilc/eGoGIe1JfOIqiymrA6NMvsURPVTOl2qLVHNGGq1eIRMmXNjYbZKgTZAZV/9faVLgLen/g+9P9GbTm+6AzomY8NFm+tWjRXv/m+y2mK61pXDOPnXF62d01ExVFidN7mlubn2M5psLYFL6lNS4MdETbLD7pqzZYsVELySBHLAJ7nLr5Y0fm9gLxMfmngfdMmE8C6EPt66yuwEOLcK4Vh6viZs7J6BOCUZZArKwetG/How0kYqlW2uEmZhom9b9PZPCyoyAEjjn9o1+2BeZazaPeRWS3h/iIJIrUtinszLVYaOujrBHRz2aw9kwQCF4v6lltgMG7q0+494Qoro6Ts1/9mgIHx1t5gaW+VJTjcKNgcEIwy4C20zyAdkQ0syYeEv52B91p7IsXfMcxzuo7am67hOfrZeb/aWOypkXl1RFdRDBVDD2kbTQha6sGp+rEYDSMZwFMF5tOJbh2FnkVn7SsCvOklz4YRRHKO3FWANep3iM2/lGUYJNS7zS6gmT3F+hUYyVix5De50xqdWv9 blwNHwPN gjNWxvsjHveSJrkyPPHpnqpS9wmvWLiS1+3DFpa88EgKvZOnp6QLSFo9cG2zht8OWvkB0fIA+dLQBrpbHkdLTgsB0MLUwo5HSVv8hrS+0A0yxq7JvlxJEMab7lHQb1bjuWveuS9zFeDyEnUZkLsJYvv5Owa3hcjR4RWbYl8X3nsVwvPRv3z5FDzggNTZXvtu0tI2tqEIxELPWigAl/kS/qWAysXQOHi9tkxK1MfcGTbwWWYkjazIwwSslv2ZsgxvwF9m+CMhg+69L0179cTYlhOwijXIsbtjHcMvVWOCY8m8Ca/AogZfT6nvUeZNQMBDCDGuXM5QlKoPLOpLzfhtmt1/aEI03mTvOtAjkSrOyaFNfzEVNVClFQ94+sm3UOFbBMH+XLeCvUF18RiQ= 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 --- v8: - Fix RV32 and the RV32 compat mode of RV64 - Extract out addr and base from the mmap macros 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 | 28 ++++++-- 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, 257 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