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 6322EC48285 for ; Tue, 30 Jan 2024 19:04:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 45E948D0002; Tue, 30 Jan 2024 14:04:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 40BE28D0001; Tue, 30 Jan 2024 14:04:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2869B8D0002; Tue, 30 Jan 2024 14:04:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 13D418D0001 for ; Tue, 30 Jan 2024 14:04:37 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id D7AE1C0C18 for ; Tue, 30 Jan 2024 19:04:36 +0000 (UTC) X-FDA: 81736903752.28.D0C653C Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) by imf21.hostedemail.com (Postfix) with ESMTP id 10E1E1C0012 for ; Tue, 30 Jan 2024 19:04:34 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=DmglAOiz; dmarc=none; spf=pass (imf21.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.181 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=1706641475; 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=yR39BQnx5CuM7HVAKBGyTLeOeO2w4fzgWq8LHVFIrGc=; b=VW+K49M31VwuRd/wvtP7b7X6guG71vGDnSt3YdDPJjV1RgmKf57GLMaMWEBK5OhL2bfqc1 rUq+Q3J0JZM3XgomY2dti8k8S1hcQOXmYvZEt782kRRdwX1pdkURxdTV4KW7bkVuOr3rH/ gkYcV7NTM1L15lfTG7Gz+hGYbmp2I/c= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=DmglAOiz; dmarc=none; spf=pass (imf21.hostedemail.com: domain of charlie@rivosinc.com designates 209.85.214.181 as permitted sender) smtp.mailfrom=charlie@rivosinc.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1706641475; a=rsa-sha256; cv=none; b=zwWl/ei4H9DMNCnew/XmLUWnt+1WyciODGRMAmSbqP/xm4AMiwQSSkQZaHRDYxZYRZCmiK 6ePjbGap3Kv8OXNYGjutFTWERKsLIoG70VGhrK/HDutJsRJOrZqWh2w9Zht5hwnOGSnSLV o1VpjjsI982vNXLN3mwrijmQSC6Ya+0= Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-1d751bc0c15so36775905ad.2 for ; Tue, 30 Jan 2024 11:04:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1706641474; x=1707246274; darn=kvack.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=yR39BQnx5CuM7HVAKBGyTLeOeO2w4fzgWq8LHVFIrGc=; b=DmglAOizbTh94yyZX9mFpzhVpiqLejt4YzAmFV2d9LXJOcCRP1yFRYkTqc8XSCKMfa 8oyqiiELaTXsJWL96vUO7wyX1DVy/vDelwI490XttECmCM+baoTdMnk8HOhEPYoF9gZe sJFtes0HNyiZxmiXMgtrelXo9KSmxLXGNpQsLN6TMbs7Yeh4s4luGdeb0SLXQk1DtO66 li6xFtcbUBGisLP5C2q5ZojMxMP4w2P4+6ttakReEjNQbxpYbvoMmsoa5+C7FyrDrBai rZPy2v+hZyvzqzzZIYAPsyQrSZdJ9vCSIAaDyurZak3OmI/yvLrGCqigZfS6fwOnbzo0 47kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706641474; x=1707246274; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yR39BQnx5CuM7HVAKBGyTLeOeO2w4fzgWq8LHVFIrGc=; b=UHTL/T2McP7cgYgklxFUYdW8iLY2M6HVW1bBdlfU1znECb6wu6CNGIEnCm0CLSblpH aNqDiB0FVa/26az1nD2lVgBBzmblnCTmJk7cB36kXbyz9Od8Try6nEAKF4X9o8/MJFSR 4v9IoPh+17kjyGzgNm0y//QLtn2HtdYBDqftm03I1dW1Id+5cnYLIi0BM8AtLtmpPJW2 rF4bKXhLM4dlT08e6tAVkBBY4Rc14iFws5/3Z4DNxl33K9hNsXK5Jd+OFk5bwZ+sjjnw 3j1O0wlG3OBZ1zKVi9hjJBl7AL6QAUAmdpskzp7+aOI0T8VNx0+eCZQ9awQ3nTfGRiLv wIJw== X-Gm-Message-State: AOJu0YzM/ucdKw0g//eDd4PrngIjk/1mxtPx9FNqKxaGKFa6AmRkI/8g 7+THUIPIMn+Z/FXVBZkcsgKjNJMb5HJV9o9vbZpAUxubML9OAEg6T+icefs6huE= X-Google-Smtp-Source: AGHT+IGj3hm3lZxg8Tv1mA9a7NdziJNVi1CzW076g8O+NcVAU25Ai6hKEgTL594gTw3Fe+w4FPditw== X-Received: by 2002:a17:90b:1d82:b0:293:e466:e82b with SMTP id pf2-20020a17090b1d8200b00293e466e82bmr6560721pjb.38.1706641473865; Tue, 30 Jan 2024 11:04:33 -0800 (PST) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id f6-20020a17090aec8600b00295c3bb9318sm1196541pjy.54.2024.01.30.11.04.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Jan 2024 11:04:33 -0800 (PST) From: Charlie Jenkins Date: Tue, 30 Jan 2024 11:04:30 -0800 Subject: [PATCH v2 1/3] riscv: mm: Use hint address in mmap if available MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20240130-use_mmap_hint_address-v2-1-f34ebfd33053@rivosinc.com> References: <20240130-use_mmap_hint_address-v2-0-f34ebfd33053@rivosinc.com> In-Reply-To: <20240130-use_mmap_hint_address-v2-0-f34ebfd33053@rivosinc.com> To: Alexandre Ghiti , Paul Walmsley , Palmer Dabbelt , Albert Ou , Shuah Khan , Jonathan Corbet , Yangyu Chen Cc: linux-mm@kvack.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-doc@vger.kernel.org, Charlie Jenkins X-Mailer: b4 0.12.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1706641471; l=2717; i=charlie@rivosinc.com; s=20231120; h=from:subject:message-id; bh=nYPj/fyg4PYV9oZH+Numr3TDNqlT2v60F+fZG4ppm6A=; b=8TpBPUYlMpe99Wy4MtFO+G5FMsAU594qBMLjaPbbTQaF/l0GF2Rgz5PEarXQGUC7U59m+QmVJ rouYGXoseN8DFOk/KglyX6LbcysJhd8mJLV8BDu96je7w6S40qMm4Tt X-Developer-Key: i=charlie@rivosinc.com; a=ed25519; pk=t4RSWpMV1q5lf/NWIeR9z58bcje60/dbtxxmoSfBEcs= X-Rspam-User: X-Stat-Signature: qwx1q5ozgkn6d99hoi81bh5kbd6a6yar X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 10E1E1C0012 X-HE-Tag: 1706641474-890799 X-HE-Meta: U2FsdGVkX1+2THH8t4DAEQQzG8nAtFD7S50sJHXKP0YPBkGCbi4B25zQRMB6JhQwo68ZYlUohSOZLNS9xChhQA3XTIHEdJhOJdmNeb2OQ+b6MX/99JSMJIU7EYfYsyeTp85ZwYOUgwteo2vDc0//KlJfq2Wa8YkTbiuz9Sf8NCAxhLkkCNABTPV5gVZT2fya/5JAeKzzGEqxymk1uhrNatbbU+3Ns/EmTj0LNlhtwLWuG32vbxEp+ZssqjnkCbZCvsAcTl1oHS1ufixNV0/qL1A5a+jqWADPKkGbe4+A2Uf5pvdUx0bv7lNO3+pIfmVzGsxiMDs6SjfrKxyUgJqssFZznEJaJgQ7UtlZfJwX5MkheE5f1IB1boDwLt2xCHQYFj3eP2+hbRNC7lsmcjUTA/uqi9WVvSB0HCX94t7isUMVGdG44pyf2hRdlLYcGcIwGy8rL3ctt5W4DTYEMpWiQUGtV3S6QHTpNvnxe3FzJjzq2txbjKtrVv8cyOX+7CKR1rGn9G1F9oE5zVx/bJKOnF8TrhwJC2mImH1TKCo3UAfO8zNzMVb7HxuZrue2lE76WQW21OCCbGatjVS7MyHRBL8zU1Tinq/O4T9sFzK7bu2drPciiyrmAmt1gMU1BHaehC8DYjtE7AxuY7OfgjZuQN42m2mpJicsBMwPbwpzR+O62i7h3MfigLrHA/2QBfqswdvjeDpdayraYVIkpZXTc19coUNhH45PgGnW+EmVFApXPxTWFHG3b62Ga69s9z4LPrxUIxZzwFZgQVS8SE1orBX+1IDJaObLxKUnaQHHrscl6w3i6+/VO7hrx34upB2dU++1A+0dTrxYxhYWr6/4QoejhsxuMUP1Au7kSDcUHUqEhlwRZxCnEEyP0h1OUB+9L1E9xYD2bg5UqlhKbeRMQVhLX9/qqU8+Ar9bc1+c2XnCMhlK68DNsr4+P3m+kuUpuXEE0D3v2xaKjha2D30 SuvKMHKb ARC/Ao+Od7hlT3OTjl5PpH/Sk5e23skDSJ1LyeIdDntgtl5bfpC0Iz+XD41pqftPg/k1ygd+R0cVV47U5dfw79kULU/Plv8tXMzGPF5KAOjWsCbNJnBtZ6IwvRp2kRnc//4sd X-Bogosity: Ham, tests=bogofilter, spamicity=0.042357, 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 riscv it is guaranteed that the address returned by mmap is less than the hint address. Allow mmap to return an address all the way up to addr, if provided, rather than just up to the lower address space. This provides a performance benefit as well, allowing mmap to exit after checking that the address is in range rather than searching for a valid address. It is possible to provide an address that uses at most the same number of bits, however it is significantly more computationally expensive to provide that number rather than setting the max to be the hint address. There is the instruction clz/clzw in Zbb that returns the highest set bit which could be used to performantly implement this, but it would still be slower than the current implementation. At worst case, half of the address would not be able to be allocated when a hint address is provided. Signed-off-by: Charlie Jenkins --- arch/riscv/include/asm/processor.h | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/processor.h index f19f861cda54..5d966ae81a58 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -22,14 +22,12 @@ ({ \ unsigned long mmap_end; \ typeof(addr) _addr = (addr); \ - if ((_addr) == 0 || (IS_ENABLED(CONFIG_COMPAT) && is_compat_task())) \ - mmap_end = STACK_TOP_MAX; \ - else if ((_addr) >= VA_USER_SV57) \ - mmap_end = STACK_TOP_MAX; \ - else if ((((_addr) >= VA_USER_SV48)) && (VA_BITS >= VA_BITS_SV48)) \ - mmap_end = VA_USER_SV48; \ + if ((_addr) == 0 || \ + (IS_ENABLED(CONFIG_COMPAT) && is_compat_task()) || \ + ((_addr + len) > BIT(VA_BITS - 1))) \ + mmap_end = STACK_TOP_MAX \ else \ - mmap_end = VA_USER_SV39; \ + mmap_end = (_addr + len); \ mmap_end; \ }) @@ -39,14 +37,12 @@ typeof(addr) _addr = (addr); \ typeof(base) _base = (base); \ unsigned long rnd_gap = DEFAULT_MAP_WINDOW - (_base); \ - if ((_addr) == 0 || (IS_ENABLED(CONFIG_COMPAT) && is_compat_task())) \ + if ((_addr) == 0 || \ + (IS_ENABLED(CONFIG_COMPAT) && is_compat_task()) || \ + ((_addr + len) > BIT(VA_BITS - 1))) \ mmap_base = (_base); \ - else if (((_addr) >= VA_USER_SV57) && (VA_BITS >= VA_BITS_SV57)) \ - mmap_base = VA_USER_SV57 - rnd_gap; \ - else if ((((_addr) >= VA_USER_SV48)) && (VA_BITS >= VA_BITS_SV48)) \ - mmap_base = VA_USER_SV48 - rnd_gap; \ else \ - mmap_base = VA_USER_SV39 - rnd_gap; \ + mmap_base = (_addr + len) - rnd_gap; \ mmap_base; \ }) -- 2.43.0