From mboxrd@z Thu Jan 1 00:00:00 1970 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 D464AC04A6A for ; Wed, 9 Aug 2023 23:24:25 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B6AB16B0071; Wed, 9 Aug 2023 19:24:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B1B196B0074; Wed, 9 Aug 2023 19:24:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9E2B68E0001; Wed, 9 Aug 2023 19:24:24 -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 8F6246B0071 for ; Wed, 9 Aug 2023 19:24:24 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 544091A0713 for ; Wed, 9 Aug 2023 23:24:24 +0000 (UTC) X-FDA: 81106147248.24.0E906E2 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by imf02.hostedemail.com (Postfix) with ESMTP id 860E380006 for ; Wed, 9 Aug 2023 23:24:22 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=4uH4uUlE; dmarc=none; spf=pass (imf02.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.182 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=1691623462; 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=E8p58LaqwOO5/ryDFldME9XzaZs3YH0sEVcGA0akbb4=; b=U07cPuremI2EV84b5q7VDN8owhJ5wAXeScTVEeqzHMo8RgOLe7V79FuYMVBEqgcCCfGCsi Rxd3REktLdfuJ2J2JZogMWnxwwkhR4FM93Z5BTBxjzg+7/sk1IJ6zI6LgaVdCnBvJu2mjC PS8lu+4RzEAkd9d9qezZx6071TqCdwU= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=rivosinc-com.20221208.gappssmtp.com header.s=20221208 header.b=4uH4uUlE; dmarc=none; spf=pass (imf02.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.182 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691623462; a=rsa-sha256; cv=none; b=XDPXhpIowdevTLS1mPrQbnabyKpuBJDAmySQ87NaCWtMahf+ZHf77QZnhfpkU4q+JsS092 O46GtyhxFy0/64nkBAgHokSLkp/b7uboNsMzur32ezorFb3AAJRBVi56BQiSqmxoQ6W1Eo 4VsXLjtjDxqo/EAN6vkZ3uQV7nXe3PE= Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-1bb7b8390e8so3326925ad.2 for ; Wed, 09 Aug 2023 16:24:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20221208.gappssmtp.com; s=20221208; t=1691623461; x=1692228261; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=E8p58LaqwOO5/ryDFldME9XzaZs3YH0sEVcGA0akbb4=; b=4uH4uUlE2xAaY7umOQx+lAB4pjHab4NR0rLyooYYTvaojxHoTJRIyzeyPysMLlOFjT FuWa/Ta3xZBNpqk6gIYdVLCOBj2ZH4vVvdXeM35aKaheH4pjDk0IHj7u9amuqZqeP3GS HlATLPmsxaOkny4mEM/N4Vlp6kVWLtuaB+0ShdcMcoQ7cRqUhOoljaQ5ZiejA9+572wC rwH7mn9AVdHsHV0BzWCeXxrc2E/qHJm6SkSFC7Q955SApUeNaerG1WDOnSEgcYV+BvCG 8WuiYD1/xas2rQKxwU4xMEJ2Yybia07rR7vd+sLVWztI074scG3BBh1aDAkq+/8u7ur5 nSmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691623461; x=1692228261; 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=E8p58LaqwOO5/ryDFldME9XzaZs3YH0sEVcGA0akbb4=; b=T+wkN4pZ3thlKIalNnE4reJ9BdIV25xz1kjvqolvevmQaMVi8Pz7V/nABlDx35hq3B GMBGTzC9yR7tszfitPTnLD3EOLnUaleRjdKi2XpSKP6+jFJqVb+jJTN/y2yTG38kLEez l8HVve5gVfLGrpQ/IReLM0bmuh7fG9/i6hW5ToZ7udjYuNzR8xr5gxXrJwQfKVIuJivH tEHZCX4+HKJIi1mcZjPQl+Y9D0hzSkg+cf+CflYKYVbnZmQy4q1n7eOh8MqbHZH9+CTy /jHrUh1uftYeaB30sDLKQNUFw4XORM2q+8DiBcGahGeEx1KDzrUAfx2RgPyyPpFIw2LO ckCg== X-Gm-Message-State: AOJu0YwYCz3wdbUJVMK0Yky5x3MFnID5a60Skj/wLIDUYNo8yF3BchDm WzLixvZyBPU6rKceqmQCR+/ufg== X-Google-Smtp-Source: AGHT+IE1fGW+XmCV+CY5PBYWciXsspEbmsKGDkSe/osIjCyGdMaRaYBOeNCrMXuf1vRXYhEruWBSbA== X-Received: by 2002:a17:902:a407:b0:1b5:561a:5c9a with SMTP id p7-20020a170902a40700b001b5561a5c9amr544010plq.39.1691623461301; Wed, 09 Aug 2023 16:24:21 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([66.220.2.162]) by smtp.gmail.com with ESMTPSA id l18-20020a170902d35200b001b54d064a4bsm82765plk.259.2023.08.09.16.24.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Aug 2023 16:24:20 -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 v10 0/4] RISC-V: mm: Make SV48 the default address space Date: Wed, 9 Aug 2023 16:22:00 -0700 Message-ID: <20230809232218.849726-1-charlie@rivosinc.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 860E380006 X-Rspam-User: X-Rspamd-Server: rspam04 X-Stat-Signature: ezojdpo7buhada9ocn6zbpz54n9f7i18 X-HE-Tag: 1691623462-721292 X-HE-Meta: U2FsdGVkX1/cZoBQXHqnVnM2CSZ1tW9i88CAfeSdA497yHw3kSlvNOGlX67chZAiI9g10tx1rGiqzHlWhufngr80exZn5654BMOOfiDBdwmlN8XpR6uWGz8F9ld3iNNQ5iujiPmNG1HIaPpjy+ac6ZlT8xY1GA4sI7il4OuZIo+Rbp0NfHfHh4B25laAspWQ2YUBW0vcxEByqQN+ClP5No/iISwg6S/1UqS/3gDOtynMmjJFjbC/v88V7ENLpvpwYJOKXhkjHXSZbr7iycl+WiTtZVQPiuiSLTANY9R3AG9KgOPciTQVBTYheVAYTHAEHRHQoYsSQfdjlb0i8nf1xHlS41S/eip6oSQ03jmoEqcAbD1wQQmXbf79zVQWGcaaIPP+C8oEELU6EItWzgFJYPjXizn8/lJQ7JkRskSq5afx9yq9dkNXPt8Y+jkp1FgjRjDarTodwba4e0BPqJlA3tOrjb2fYXBpSmzREqNFi4TH4GUMOJsUcB9Ywmhi6607o/kriFiV1LEAV55JvP3xEP5fuV7KVTjqJcLCXV0C2HvT5CFLX9H6mCHxk5PXOX4Zh8+GFMIGYEXo/C0QbkFOnAGmXT64JlVW/1YNpArMyi8bu6MPySSsbNdM3xb3rSP+59eDV6RzKzrRwTviN/hcZ91wFrGvYGCSqp6vUHqQAWkJnW4hQYRcaSkCc5v+T8IxV/Fh3p4/bWp4WKYzNhaTxCqQ0krd9kL/qEElXu7qmYWJFMBeRIDNwn8rx2U0xjrIY4fbnW9LRQZUlbP6emmuJ5qQh8cIsmd+sEF0UKdfLmpW1nsqJID/RG3yIovgyaXlFf2z0BOOITl0NilPq+pSQkHdh4U2cG24XHjMfkwEefy01prUj3IaE6K0y3VAdbcMw0KpYpyCymIoorCR9kgvmKU9vK+a0FO3rRF3La0q3dSJohT2a5wbLw/IDmuDPQlSda6MY7G5ByyMjSnawlh 5L4YwKtk 6MTfO0prSCYfIb97WYbblsDY3vRfU7NxPDlNbW7VwVNhdBaHl1tdDZMUJIyfwUORmJxVh+W1k+wukQnt+7jHdJi+p99rralOvkTypZOC2c3KTyEANsVsXH8h486pPcUPPEDD7tS1jJPwxRyeRK28UPBmpU1rmv5WucbCvM+WafvIH3bkwzo/Wu6LR/VRubGVfdLxM/2Zt/X4K33IWD0I71t0Vat5Gy+cVIUQ41Vu2FBIihbfbTnbT/gujl2AvqPfUo0nUanZvu2NdNLUvT19rjbBjoTSk7XSjKosacdOyn+gUuFTdXGHBcspHoEW3ME/jtb8whDxLckayPJZEtA5C1ePyjdSAXRitqoN+rUZn4YFb5dZG5k5cn9C/4rZclcBnbCXFVTy8T2YQhko= 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 --- v10: - Move pgtable.h defintions into a no __ASSEMBLY__ region to resolve compilation conflicts (pointed out by Conor) - Will now compile with allmodconfig 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 | 33 ++++++++-- 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, 261 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 -- 2.34.1