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 35721CD5BA4 for ; Fri, 6 Sep 2024 06:20:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 46F636B007B; Fri, 6 Sep 2024 02:20:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 41E5D6B0082; Fri, 6 Sep 2024 02:20:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E6B86B0085; Fri, 6 Sep 2024 02:20:17 -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 130E46B007B for ; Fri, 6 Sep 2024 02:20:17 -0400 (EDT) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 76CFDC0F62 for ; Fri, 6 Sep 2024 06:20:16 +0000 (UTC) X-FDA: 82533313632.02.47151E5 Received: from outpost1.zedat.fu-berlin.de (outpost1.zedat.fu-berlin.de [130.133.4.66]) by imf25.hostedemail.com (Postfix) with ESMTP id 4F2A3A0010 for ; Fri, 6 Sep 2024 06:20:13 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=fu-berlin.de header.s=fub01 header.b=oADw6XG9; dmarc=pass (policy=none) header.from=fu-berlin.de; spf=pass (imf25.hostedemail.com: domain of glaubitz@zedat.fu-berlin.de designates 130.133.4.66 as permitted sender) smtp.mailfrom=glaubitz@zedat.fu-berlin.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725603541; a=rsa-sha256; cv=none; b=TqRbftTLd+MUrMFRFEDGSRkYr6MRFUblVHPtzE/Lmc+V9pSeEZiBUjioQmALJaqjdguRYU ULby2vCeximFz5s5yPdTNfn32c0K2EIiGQt+4KP53Z2ViCUTu2KbWdHTNYOo7dRG1osFeQ V7xkRLtCMH2B+lFU3iKdTHThncWIjJM= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=fu-berlin.de header.s=fub01 header.b=oADw6XG9; dmarc=pass (policy=none) header.from=fu-berlin.de; spf=pass (imf25.hostedemail.com: domain of glaubitz@zedat.fu-berlin.de designates 130.133.4.66 as permitted sender) smtp.mailfrom=glaubitz@zedat.fu-berlin.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725603541; 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=Pf0qJBv2a5VO5pnFKJd+fG12gABSq0Jxz8dYrGBJaUk=; b=AcJGSyEJphv+S021eHA8Cxxs2mUDXIkcxSeXbfpGUEtIX0C460C0GHg9HG656DXYUDtCps 2K4YwtoPUQCdNoCFKyVGlEFHpZ3VoWLxMhSpBUadWYxHOgaHE2rWu6CRhLOEVS5Co2Qk/r Chu5FbNfPnwQt27gkPFRUJhbIt2DdTQ= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=fu-berlin.de; s=fub01; h=MIME-Version:Content-Transfer-Encoding: Content-Type:References:In-Reply-To:Date:Cc:To:From:Subject:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=Pf0qJBv2a5VO5pnFKJd+fG12gABSq0Jxz8dYrGBJaUk=; t=1725603613; x=1726208413; b=oADw6XG9lXEL3o64UcMjNFgTYjL43nlhlvxrICO38otuNbOBaTB6EFCMpEtn0KgLEAnak2MJ/gr DwNNIZ5MYXUuK0IUcptKqXN2N2lvSbiSai/VYOlJsKoIkHRhdU4i0wlkMjpMkG+4Dz/cPCBcGwNfs VtFaH80+3j0UhY6FHBGmXBTvkbxp+I709B7QWUoplLZdvNR5+ZWpihbShiohD8C0kbBDURdrfmWH8 vsxzo45HlkCMLoJ5RVZ9DETTotN46gbNLd9UrW8uHkBrIsY+gg7e5lmwuIgvssNdZKsogRr3To8iK 45y0Jk+jju9yIpshfrDpvCaRimZ/I3uD4ZVg==; Received: from inpost2.zedat.fu-berlin.de ([130.133.4.69]) by outpost.zedat.fu-berlin.de (Exim 4.98) with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (envelope-from ) id 1smSJT-00000003bKB-2zIl; Fri, 06 Sep 2024 08:19:19 +0200 Received: from dynamic-077-191-186-033.77.191.pool.telefonica.de ([77.191.186.33] helo=[192.168.178.20]) by inpost2.zedat.fu-berlin.de (Exim 4.98) with esmtpsa (TLS1.3) tls TLS_AES_256_GCM_SHA384 (envelope-from ) id 1smSJT-00000001qiA-1L1j; Fri, 06 Sep 2024 08:19:19 +0200 Message-ID: Subject: Re: [PATCH RFC v3 0/2] mm: Introduce ADDR_LIMIT_47BIT personality flag From: John Paul Adrian Glaubitz To: Charlie Jenkins , Arnd Bergmann , Richard Henderson , Ivan Kokshaysky , Matt Turner , Vineet Gupta , Russell King , Guo Ren , 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 , "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 Cc: 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 Date: Fri, 06 Sep 2024 08:19:17 +0200 In-Reply-To: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> References: <20240905-patches-below_hint_mmap-v3-0-3cd5564efbbb@rivosinc.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.52.4 MIME-Version: 1.0 X-Original-Sender: glaubitz@physik.fu-berlin.de X-Originating-IP: 77.191.186.33 X-ZEDAT-Hint: PO X-Rspamd-Queue-Id: 4F2A3A0010 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: c5nq3d6cr3zc8dy5af3z7jpcpqusru7t X-HE-Tag: 1725603613-568016 X-HE-Meta: U2FsdGVkX1/MnjL7hom+p+mWLTyNqzPdxkDSebk7/xJ7+xt3dvNdGd58DU9ldUTDo5lha/HIu4LqFp9XtsMwYajJRN+VIUdy7yWCqhGJbOGQg85bH2SVwnxT2BihqxBX0V2AerAhauke5RMyC2edLenNa2YuIPNyr0S9dbTWmjqKhhokdgufk9A976usHQ7yR0B2xbR/Gnh/1nrUym6se9JMUdmpdvixwUs2pFYKdTxu/lJmXwwHeuMiXI9gVcPEVJF53gsDZ6QQbgM8iHdIH436TwbbQT27vprcs5QvnL2IH3XBW0o0uZaD2PKn0b7GjyFNC77WDeY4xAggY1/RAlBrBV+6E88KAzhESr5PqjCW5PvVz4XNqJSW9x9LIiusBwjDarGbDYLR5DzrSyByCjBOlDJG/ECh4X2c8oBe03TAiLroGNbkT3An4ziPzASfA/fPGeFSvCZ5ga9gM8B4FUUR9EYjXrjP/wNvLHft8DWN2AsG5aAMMRV+N4XKt206nvpeVuX/zKPKu67nCdJ6ufHgYPXzUGaLutr+A41X0Qh63+yVxKOH/vfj5Lkjy0qBEsZwyy48aM6414KjUCP07BxH46JqbsToIvqZaekdRipCZ6MRQncgN/uVxjvaFQhAnEAvqusm0FPrB4tDSzOhKMYAgzZR7JbA/xYRNyesOLyB1yu/lz+cZ+ewh+SfRtC0Rm9o5kRV/opEu9B4QPHChNrZCrc9waq8YURWwUxqDXjC/5rgPkzGyyE9Jz6dveSE742+4IRw3LOOp++NILWaNXpFaT6Xt8amILUbG0+FI/jITBI2L4WjRk3jfExAt1trJ1Bll6TMfaIzmN1J88LGanyrbBtud8wKXHGxn+BN7OOxtqZjlwbIPB/upDtH9ccInI/V1DvKYn5WMsHPh1wOmtaoSSp0G/244qmAVgv1hjvYbyOBsvg0RWa0JEf3ebLrBxpHuo4NzJtmSSVTaXd 1V/08juZ +BZx1LP7IoOldK1W1+p70/rVJ82i6OV2UQqXflT/7T9m0g0PyEHF6/oDxo1NR55mZW/1FVPUjRRrab16pnZrD/C3gB6Io/pOlkBxBc5cL5IdRq0CB28iMcCBpC0H8+0w3RgPuBsr4iF2CMoC8cqqVkCUBmuokFvrj5rOFz3H9D/egoqnHuToL+2NcXIhEAw6WUHUSAjEXmpQPN6XBw5cZBkTGyLYST6xeuCSk7AXdda53gGRgW8E9cAinQvzlrpicx/GoGGTcHZPM4Fv77QKwE7wV1RyxOYRwjgYROUQWH0W4mtzUqhttEPSYXZ4wkix+L+tMWpWpfz0MN2Q4202CMYpzsVXHHaP8Ntm5m5web5GxqX2Q66G4rhVhZtuQw1USqUSDrkj1wGzsunVT/8raH3Qrk7OtN0e0jmtB3Mj7T5tmOxlAvGvp651Es7xADHIiCpzNMXAmMrhWE9RthdAmACIVzXaN19HWOb1ja2JXzcA0rz6C622Z4+SGbahRW7HsDbiupq3f1DdxRrADHlTu5y1AQz5JAq84ZerEGGRw12jw5rJOAM8ayZTSkgh5D8/IrRumRUyF6pxGpLY742CQtMNGgtM96WmSHZNITjWZcsk12YYin2Bi/7yLNI50RfG86I3dYezI3UZJtTIl8JVkhuCP1O1maLm8lZ47HAYPIcKU+TGts5jU6g7IesH4XyNRRAgF+yD2VzMT52Tg1CP3q6cjU/qJ/BU9t3gV67Ts1T/cAxke9qB4YcVjhrbUyPTwgXxZvBE1blNXpHzG10i3tWmq25swVIL7vt3JknfZ6TgfR36Jgfp0LTwuZVLJT0Olyi1fXm98yAtn2g5GQdBJ2WZue/J23a1qSC9eGl8BVoJw8o1Z3I+Hw/9ENg6CBr3M/PwRMWIuwAA8fZGv+wqivojfYl9SsgCAc3NcFcRKjpjk84cHqCCtPiL0yGB1Y/Q9vMMo3oh5wKzU2kLYuWVMHRKkSHwA gkFfHObt FnljSklaQlqxF0mBOqQDpYECQ/B+C+miKwgYCGOPYDxdUpKz5yx3dPBqJFjnC9Q2aqInutaIoAyEDoDskEU5nejfVmYwCMr0P+8jPdE1r8t7g013UgBSx3hOj05wHWA+b4Cd1nSa/6nLjTwH8yJtv3LQxrxPFVVkvqZH6JZv4YBCMVfbpqlNuNFGHm8TwKQNWSmWsVtTtJ5iX6zkFfWIsjb1PI8NLfQzLlhvsXAP1GIeaUvhQB3b/nnmeq6iXar52C0lKANOSpY6yI6fM73wZsi0gdosqe24KyQIrlkcJt5lGhqbTPD8AdaRex62ZKkEuMBBgCMhY1oxO7614ct5N6HlDyOe475+S/d+NNWBa2SyZyALCKlJRcjimGWxtXcdrLh0tW1W+MCc/un9ZMcUT3U2abVdtqltsebz9wsbV5xiUslfOyS2HLHETmzwNWPfdDMLvZ8mRlB2cbj0GySBSvkeorzl8Y09smTNCa2Wf2ZZAwjt7ZaZuOWtYywwUlELn9OxenbJoob1s3kYvFdpnDtkelrb8OeB0zt8ULyGwXkzLYK81HsUZMRhqp5m8VBi8k6DJKRSMjpW5UluBQ6qlKCEPh3FfPJurulPbzqJHv0ot//TkKMaC3Poca0T2fDR 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: Hi Charlie, On Thu, 2024-09-05 at 14:15 -0700, 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). >=20 > 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]. >=20 > 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. >=20 > 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. >=20 > 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.=20 >=20 > 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] >=20 > 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 >=20 > 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 >=20 > 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 >=20 > --- > Charlie Jenkins (2): > mm: Add personality flag to limit address to 47 bits > selftests/mm: Create ADDR_LIMIT_47BIT test >=20 > 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 Wow, this issue has been plaguing SPARC users for years already as the arch= itecture uses a 52-bit virtual address space and Javascript engines such as the one = in Firefox or Webkit have been crashing ever since. I should definitely give this series a try and see if that fixes Javascript= crashes on SPARC. Thanks a lot for addressing this nasty long-standing problem! Adrian --=20 .''`. John Paul Adrian Glaubitz : :' : Debian Developer `. `' Physicist `- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913