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 3F3C0CE7AB4 for ; Fri, 6 Sep 2024 06:09:00 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C5BE26B0085; Fri, 6 Sep 2024 02:08:59 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B6E706B0088; Fri, 6 Sep 2024 02:08:59 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A0FF36B0089; Fri, 6 Sep 2024 02:08:59 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 81A4C6B0085 for ; Fri, 6 Sep 2024 02:08:59 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 2508EA9110 for ; Fri, 6 Sep 2024 06:08:59 +0000 (UTC) X-FDA: 82533285198.29.75CFF59 Received: from nyc.source.kernel.org (nyc.source.kernel.org [147.75.193.91]) by imf29.hostedemail.com (Postfix) with ESMTP id 3BCD8120015 for ; Fri, 6 Sep 2024 06:08:56 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mMW64gLm; spf=pass (imf29.hostedemail.com: domain of guoren@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=guoren@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725602911; 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-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KoDC8byJaDeNriYQvbHrbg6UlJkCxONYM11UgK73y7s=; b=5ODcxWflskF3Iyv2USiHyG59mknVswPZf3psg3rwiJdahWJTa6Vv469zXrtgmlXR/NXfCC Lew14epqKwWxzRJyQzdvUjYELGxy9WGT0TvxSHoyiIe06Wvpj4XKo4ENqn3SNHO3BmZdO4 jolT4S/RpmhIn6yB7C/7TZeByTUuJ3M= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=mMW64gLm; spf=pass (imf29.hostedemail.com: domain of guoren@kernel.org designates 147.75.193.91 as permitted sender) smtp.mailfrom=guoren@kernel.org; dmarc=pass (policy=quarantine) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725602911; a=rsa-sha256; cv=none; b=foQyB/I3GzpBo2wzIfYjnFTLWCQuUNM7AEGGJ+fPrDNMmhdPWT97J1kYqUqaTnJ5GWMYIT A9lmVyXXDeYsHfx+Qe5T/8zVZqeN63IQJU/AV4zObuPAFGyhPM3MIJoFNP0vwlVAAzCfpr M1rvXR+Bys6jmQBNF4x3iPT7vApOuL8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by nyc.source.kernel.org (Postfix) with ESMTP id 10076A4474A for ; Fri, 6 Sep 2024 06:08:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 738BEC4CEE0 for ; Fri, 6 Sep 2024 06:08:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1725602934; bh=imDUvx1Hii43SnkhK8GwTQs26eTyhJYRfhTDRAtZziQ=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=mMW64gLmWYwNHxfzlvaoGMBLGF0ueWOxcjrWhSUrtIlP4vdUd7xae5JPy3JKqIExz HFuiZx6oWJmovq63/cl+v1ZU19PDWFCuqMas6d7gV33rwhbsIjf/6jKgtDJi0CjkaM nAyscQokSqYPIUNn+/TkhSXvtu24dJ3kiLF2CEDvIPyPBbHH7uk6zFOptSZYge3L0P rhjznSkw4UEu9OgtKgG+WNoivArvnTJTCqu9mRUL1aD6wfECi7osbo4z5PCvKLIQRB x3CsUjPvuNXAShUQV2Y5AaW8FjjBy+AWygG7+uu3f9QIpIxTL3VXFknAtoxQuKUuS7 CI+n8mob5I75g== Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-a8a7596b7dfso233314266b.0 for ; Thu, 05 Sep 2024 23:08:54 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCUh4kY5nJBAV2F++lLJ+t5ewIM8lxuD0ILvJutNHKpdl//CJQ3kdTmPIXyNJkU/yb6kEMuFiZrvTQ==@kvack.org X-Gm-Message-State: AOJu0Yy/im5J0CjWW81SEpNSnffWeDxB1nqPklJJE8gLO63kDdLqRzxF vRSImhoS5ottMoX56WVX2+r+BWqPcUOWmGabtqYglTRuUGbh0AxJSzLW1ihBXQvLbWJ5JMdNcva QVXyUdQkPCCUyrOye7cJIvidqRuM= X-Google-Smtp-Source: AGHT+IHmDTwta2M/ptJ8I+HJGlz0i22zQ861L/VtKZzzihvpyO7sN1xzTAGALtM9rjMcOlsIyxzfNUzFUkdZe9E/qYg= X-Received: by 2002:a17:907:7d94:b0:a86:beb2:1d6d with SMTP id a640c23a62f3a-a8a431c7214mr876305366b.26.1725602932791; Thu, 05 Sep 2024 23:08:52 -0700 (PDT) MIME-Version: 1.0 References: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> In-Reply-To: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> From: Guo Ren Date: Fri, 6 Sep 2024 14:08:40 +0800 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH RFC v3 0/2] mm: Introduce ADDR_LIMIT_47BIT personality flag To: Charlie Jenkins Cc: Arnd Bergmann , Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Alexander Gordeev , Gerald Schaefer , Heiko Carstens , Vasily Gorbik , Christian Borntraeger , Sven Schnelle , Yoshinori Sato , Rich Felker , John Paul Adrian Glaubitz , "David S. Miller" , Andreas Larsson , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Andy Lutomirski , Peter Zijlstra , Muchun Song , Andrew Morton , "Liam R. Howlett" , Vlastimil Babka , Lorenzo Stoakes , Shuah Khan , Christoph Hellwig , Michal Hocko , "Kirill A. Shutemov" , Chris Torek , linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org, linux-alpha@vger.kernel.org, linux-snps-arc@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, loongarch@lists.linux.dev, linux-mips@vger.kernel.org, linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-abi-devel@lists.sourceforge.net Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: n8h4dqjomigppbht3fgi9ym9jajracx8 X-Rspamd-Queue-Id: 3BCD8120015 X-Rspamd-Server: rspam11 X-HE-Tag: 1725602936-972753 X-HE-Meta: U2FsdGVkX1+kTHZwPQ8z8d7cVEFXH9/dREPb+W54HV/U5RKqe7h9+eFZEVb+3voNjFpGZfTwTq94FkzIHnEkez9pn+R6sd/mFCDPXRjzt+c+ooXNTZNfhrR4YCAxcSnhvaZrMa7X5EO+KvTMYMpbl/2tsJhhQ9OU/MRjHP8xtWGgHbNHr5rAHpmJqHIxEPIuDJF1Br2wNFmsJdDX5uaKZr8vBSGKWVma+MhSgJiPwJYz9/reYA6lHqA1qXAsujORj5FVhU+W/q//IYiFNFQhjDx+Sb4lA80bt95UxQY4m0chofB1xoBFIpO8Hr18QFtXskO9QaszsUoRU2p/fY+C8FfI38Wk4850D4NdgZq64Xh+9MDX3l5sGZ/A2Kh7HsaftZM8CmVBwhXySvLW5PHrd2OF0OZZa6YIk16ph2GLHdzpvUigDjLP1uk+nJx5U/EgEbJ4/0guEZZ9U2ezp6auTRs2ekKId9aiqGb4X1Cte2DXFrlfsNfTOC2twfMXTaqEZIPYF+9DGJReKMalA8Y8N3SgRyRlJC+eTeImiWGcgkeYDa5u/6hksSW3Aly0O+ONctFl0vwdQ99OEKy3ORiTGhPDh6UrY4jRa1pwSC4PpeUkuXSMQe+qOtivXHIRFFBHheQInwiaCva4x/VHfrFRGwOkzpO0QXmtADF2VHjTD45PZxHNmrKUtwl0NWR56JbHF2bghhDX6wGcbd7R2gCcMCqtqRp1pYpudX7dHeprIXneWWeHzLM/VUHNnNaa0e/X32+3Uq5YkHQTuvHhCUXpF6ezCwpcGeMBoK/WCCSvrbdzDc515ljOuMlIR0MGdT7ffOjakJOGBqZDngqkL2N1otjMia5bo/2TK7Bg76jzddxpwLdOqM3JyWI1TEgPteFbJOSj91oW/+I+VQOcWUYalHYHM8oB4Qcc2mpQ2IS6ph37T3Om24JiE/GDqtHLbxaK08gKmIxxS9284GONfx6 CIz5ZRb0 fJ92fVjhQJOsVOuJVU2ZFseC+ina3k7V8srBQzAgCeUcCk80yvOSN0blhoQssK1/1oNd+2CuHvsOCiEZeLEE+bkOPYhJShQIWnqj1dRWjDH+KsoaXRQizQ/jZQZH6L4ApHd8Ks82nGSBqUGFYiyLArp91Zr2sbqMcZAgfZ+OqqK5SnHbTEsOt9NRv8G0sR8KXv7xot7u20X16uoV9bq0YIe+tpwbkZAv+3F7Zv5oFltzNrLM5UgDRPKEXSlW7tva1nQGE+/YmY+cW0cF7h7mgNMHt65x+ZE2UcMdgYjTVRfFELH7QZPwV6JwePE5e+qV9u342oGlhbhtfB7GkI9idF27nUuFEAns1n9449vTEbfKwwtgE1opinklBLCbmzXjB3reb548jmw9pS/9CDWXnSyWzC0c1YDowQle9QdKasnN442Lb0vOCRxxu1c0epBH/HyF+vKSwWCcai0lElsQ9eTbGlWn++Cf7uoG0R7xG39rS6LGri8Ja2/YRzB4yZmJUPaP5blTzNumxCxbZmcPGXZVfFtY6WZykRcF2kZ/sljfXp89m3rOgZt5hbbaJgQKDZm7yRv1dKH/l+3uDO0eTn1gl17QX2Zfc5o5Fg3fYculjrJe2bxz4bt18JxrSJ0evNl0n6dvN0v1oR0BBKaAfaHrlCwQYSFEffCnhhbXP0bjpMwYVYSPYRtP9DAMFx6reC8jYOSwzwQvPnfwJIk9E2KlTReu8jBviS6FSoEWldxqV4wDmFAEtskZODERfAkSdSByrnp8oHb+XIJOegTrQuRvsyJ9v6yRvIMM8USBpvopL5GzN/dT429rQQZVu4CEWwYmjyEEBkbHuzDUsGWTFXQbGExl3fmDR5d4bqwcrP25MuzB7indGW+C9lUT8KOWp7UzDddnFpT5x/wP/DRx9pjf21nNF2pAfg0JfNG8jJoxs952x+gnrlDHn2NHP+m/fFtHkWS74fOK4ajNvcWxsfnCbwuba 9MeRmQfC R/79zVDFYFkS/jaRthSxlZMinO13+PrVORHaclczGGRWQrhmV1TrbtAWQOyXw+U/wVMlD4OGSCw69r92ghBYdAh4ev1AUO1Sc2XHos0nt9wPx2qYYjAC3xb6IRPvN0mtrFqt1swEsA3WukxVUutLSyu289bCHY+orcAnEjwvinR92sgU2Aud2yYiaR4woM5noZUhjQaD8Ef5/CT38jby1PQfDOgLw8c6GJgXPHO1tLMFrKeOidgYR+ctoVHKSJDfQrT/cAEuOYqSa6uSZz2YbemuVgpvx6GQ/HXDO7eWvToneVNuw7KStrBS9VuMpM7xQRHEEdNI9mwFGOr9zDp3T4u1+Kliny3dRLzMJTTqcHrZaOQs31VUv9KBzzdlD4hvzBaAjFqUITp3reKrnFJY2wf5ul/vK7uNAnmFXtkeqccUxHFR9TRC0WAExWzqBm5gdBd6qyV1hg9M81ln8aJjgg== 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: List-Subscribe: List-Unsubscribe: On Fri, Sep 6, 2024 at 5:16=E2=80=AFAM Charlie Jenkins wrote: > > Some applications rely on placing data in free bits addresses allocated > by mmap. Various architectures (eg. x86, arm64, powerpc) restrict the > address returned by mmap to be less than the 48-bit address space, > unless the hint address uses more than 47 bits (the 48th bit is reserved > for the kernel address space). > > The riscv architecture needs a way to similarly restrict the virtual > address space. On the riscv port of OpenJDK an error is thrown if > attempted to run on the 57-bit address space, called sv57 [1]. golang > has a comment that sv57 support is not complete, but there are some > workarounds to get it to mostly work [2]. > > These applications work on x86 because x86 does an implicit 47-bit > restriction of mmap() address that contain a hint address that is less > than 48 bits. > > Instead of implicitly restricting the address space on riscv (or any > current/future architecture), provide a flag to the personality syscall > that can be used to ensure an application works in any arbitrary VA > space. A similar feature has already been implemented by the personality > syscall in ADDR_LIMIT_32BIT. > > This flag will also allow seemless compatibility between all > architectures, so applications like Go and OpenJDK that use bits in a > virtual address can request the exact number of bits they need in a > generic way. The flag can be checked inside of vm_unmapped_area() so > that this flag does not have to be handled individually by each > architecture. Acked-by: Guo Ren Sv57's pain finds its cure in this antidote. > > Link: > https://github.com/openjdk/jdk/blob/f080b4bb8a75284db1b6037f8c00ef3b1ef1a= dd1/src/hotspot/cpu/riscv/vm_version_riscv.cpp#L79 > [1] > Link: > https://github.com/golang/go/blob/9e8ea567c838574a0f14538c0bbbd83c3215aa5= 5/src/runtime/tagptr_64bit.go#L47 > [2] > > To: Arnd Bergmann > To: Richard Henderson > To: Ivan Kokshaysky > To: Matt Turner > To: Vineet Gupta > To: Russell King > To: Guo Ren > To: Huacai Chen > To: WANG Xuerui > To: Thomas Bogendoerfer > To: James E.J. Bottomley > To: Helge Deller > To: Michael Ellerman > To: Nicholas Piggin > To: Christophe Leroy > To: Naveen N Rao > To: Alexander Gordeev > To: Gerald Schaefer > To: Heiko Carstens > To: Vasily Gorbik > To: Christian Borntraeger > To: Sven Schnelle > To: Yoshinori Sato > To: Rich Felker > To: John Paul Adrian Glaubitz > To: David S. Miller > To: Andreas Larsson > To: Thomas Gleixner > To: Ingo Molnar > To: Borislav Petkov > To: Dave Hansen > To: x86@kernel.org > To: H. Peter Anvin > To: Andy Lutomirski > To: Peter Zijlstra > To: Muchun Song > To: Andrew Morton > To: Liam R. Howlett > To: Vlastimil Babka > To: Lorenzo Stoakes > To: Shuah Khan > To: Christoph Hellwig > To: Michal Hocko > To: "Kirill A. Shutemov" > To: Chris Torek > Cc: linux-arch@vger.kernel.org > Cc: linux-kernel@vger.kernel.org > Cc: linux-alpha@vger.kernel.org > Cc: linux-snps-arc@lists.infradead.org > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-csky@vger.kernel.org > Cc: loongarch@lists.linux.dev > Cc: linux-mips@vger.kernel.org > Cc: linux-parisc@vger.kernel.org > Cc: linuxppc-dev@lists.ozlabs.org > Cc: linux-s390@vger.kernel.org > Cc: linux-sh@vger.kernel.org > Cc: sparclinux@vger.kernel.org > Cc: linux-mm@kvack.org > Cc: linux-kselftest@vger.kernel.org > Cc: linux-abi-devel@lists.sourceforge.net > Signed-off-by: Charlie Jenkins > > Changes in v2: > - Added much greater detail to cover letter > - Removed all code that touched architecture specific code and was able > to factor this out into all generic functions, except for flags that > needed to be added to vm_unmapped_area_info > - Made this an RFC since I have only tested it on riscv and x86 > - Link to v1: https://lore.kernel.org/r/20240827-patches-below_hint_mmap-= v1-0-46ff2eb9022d@rivosinc.com > > Changes in v3: > - Use a personality flag instead of an mmap flag > - Link to v2: https://lore.kernel.org/r/20240829-patches-below_hint_mmap-= v2-0-638a28d9eae0@rivosinc.com > > --- > Charlie Jenkins (2): > mm: Add personality flag to limit address to 47 bits > selftests/mm: Create ADDR_LIMIT_47BIT test > > include/uapi/linux/personality.h | 1 + > mm/mmap.c | 3 ++ > tools/testing/selftests/mm/.gitignore | 1 + > tools/testing/selftests/mm/Makefile | 1 + > tools/testing/selftests/mm/map_47bit_personality.c | 34 ++++++++++++++++= ++++++ > 5 files changed, 40 insertions(+) > --- > base-commit: 5be63fc19fcaa4c236b307420483578a56986a37 > change-id: 20240827-patches-below_hint_mmap-b13d79ae1c55 > -- > - Charlie > --=20 Best Regards Guo Ren