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 DA996C77B7C for ; Wed, 25 Jun 2025 17:21:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D8536B00C9; Wed, 25 Jun 2025 13:21:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7AE686B00CA; Wed, 25 Jun 2025 13:21:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6EB626B00CD; Wed, 25 Jun 2025 13:21:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 5C0986B00C9 for ; Wed, 25 Jun 2025 13:21:20 -0400 (EDT) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id E2DA05A479 for ; Wed, 25 Jun 2025 17:21:19 +0000 (UTC) X-FDA: 83594589078.11.9DA567C Received: from gentwo.org (gentwo.org [62.72.0.81]) by imf07.hostedemail.com (Postfix) with ESMTP id 3CD6E4000F for ; Wed, 25 Jun 2025 17:21:18 +0000 (UTC) Authentication-Results: imf07.hostedemail.com; dkim=pass header.d=gentwo.org header.s=default header.b="A7ARc/7c"; spf=pass (imf07.hostedemail.com: domain of cl@gentwo.org designates 62.72.0.81 as permitted sender) smtp.mailfrom=cl@gentwo.org; dmarc=pass (policy=reject) header.from=gentwo.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750872078; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Fh+MHTSh7/+RYJ6bymU1lM2u5Bc8m5VWfGZVyjlC3fI=; b=aiN+2OZHTT0lir6oziz/sUuX3A/BAJ/Wr9bg+KPNKSPt5hId0f7lzRAEtxolmXrwOwi18k vFcb2YeBfLgiiCMdDUqbAr/2EiE+Dr6yTFp+wndpJy+1MAs5cZwXDORyOo6SMLFBbuhQMu 8dYhV7qziuzesrjNQuh0sHl6gvqFrtc= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750872078; a=rsa-sha256; cv=none; b=hYs/afMDv9g9SFeDPl6BPxjV3b4cN3ltJj3L/RrQnkwZOTQmmz56UHqM1lhnwnb3eZWk9O SZr8iGD0p2SlsH/NZHbirLK/ItY6pKSaq7XfXAA4SFEVF6N4uLHQF7Ox2y9CQ0Rqpkd1+L IKXZ8MRFzoXyU2xUCUGhOXX0ehYwH+U= ARC-Authentication-Results: i=1; imf07.hostedemail.com; dkim=pass header.d=gentwo.org header.s=default header.b="A7ARc/7c"; spf=pass (imf07.hostedemail.com: domain of cl@gentwo.org designates 62.72.0.81 as permitted sender) smtp.mailfrom=cl@gentwo.org; dmarc=pass (policy=reject) header.from=gentwo.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gentwo.org; s=default; t=1750872077; bh=CKN7jXDXNSdo0JPoRAElkX7s0qdgtsJUpELl83VbQOM=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=A7ARc/7cVihbcYi3L2nhTZBJa5JGYExfH9JovW4hj1UDk/lWRioFkPnsRoR1heZC0 /p1a4jK8Q4ryTns5zwES0BEegTS3VpQ+Sao094IWUdpw3wngYb6c+r23xdMP7OjAY2 ++Fry20RLTEr9ZgxeFe1Dmq4C/fNc4kfKF20eLo4= Received: by gentwo.org (Postfix, from userid 1003) id 1BE7C40267; Wed, 25 Jun 2025 10:21:17 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by gentwo.org (Postfix) with ESMTP id 17CB040113; Wed, 25 Jun 2025 10:21:17 -0700 (PDT) Date: Wed, 25 Jun 2025 10:21:17 -0700 (PDT) From: "Christoph Lameter (Ampere)" To: Mitchell Levy cc: Miguel Ojeda , Alex Gaynor , Boqun Feng , Gary Guo , =?ISO-8859-15?Q?Bj=F6rn_Roy_Baron?= , Andreas Hindborg , Alice Ryhl , Trevor Gross , Andrew Morton , Dennis Zhou , Tejun Heo , Danilo Krummrich , Benno Lossin , linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH 4/5] rust: percpu: Add pin-hole optimizations for numerics In-Reply-To: <20250624-rust-percpu-v1-4-9c59b07d2a9c@gmail.com> Message-ID: References: <20250624-rust-percpu-v1-0-9c59b07d2a9c@gmail.com> <20250624-rust-percpu-v1-4-9c59b07d2a9c@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Rspam-User: X-Stat-Signature: eixx6bij4xyq8r6g431fdxpu3dcyud8w X-Rspamd-Queue-Id: 3CD6E4000F X-Rspamd-Server: rspam08 X-HE-Tag: 1750872078-364269 X-HE-Meta: U2FsdGVkX1/2bjvxglpTytenhtgTttuuER/g+bXUoOQq0Bl9lAtYlTAIsdfK53R5GqA4phOmAKtYjg3VfrrXlFqADLAwbWBrqXj7Al4ePASA7KqIAvRsXEHUbH9JKWoKEo5GlsHnZBRAIHhAHYY90iD35pylM469+nMhyKi12bNUvXfyq5MbHWh9dEtSscsFdm87Ch+XKbjCnjUFV1aqRSTXDXHx6Q5BK4baP9xQRd/RP2lLDaw65zVc9SbsphtgQJBzRaqjHmdVTmXwWNpobAYVR8i17SoSLZ7FVUOtonj9heL8heJz8ee1PxYZRGhhH+ja6PLSTt6cUPCNPQfxEDKL6Cfr3GDPFNxANCm3XqrvLkbaLyOtRCh/5y4lnnToVbzWs+SRiOldmTgQV3e7J3eQnFhtqRr9k9+KMQDyPW75QxxHFRGLJFy6TM/Wb9tILdBR4pr0mB2AhXgD8iFl6oU8Qlv/nQ6LIEzB7FAEz5YGW3/LbDknmrxcHJLnVJ99cWgHf6ZaZrmz35hPhiYhAsFOFDvfmIUFL63ko1ofvPmA9idBPUn1GuP6lRi2BjjJZBKzuTLDRjnl7fsGokT6FASNhj1ZzBhasGK4mOOypCt+QsKXuGiVVJMovkyVKIAAsGAqtg2cg5x6HDh0QTze5HTmwwrxGUM9llwNtYGN4pRNO/Bahm1QtRKSmBK/FPpuDUUJ1PGRSuUYKZm3IEkKcrhj69+s+CNECuCUMR34hCLpl4KJopobbBdQv6IwCHZaeemIOhNGDtNy7ruxhgYB0LTP4ZWQbapv435fKw0VSBezASpA5AXHw48ULfrewQzkWmQ9M+opjTaPhgCUUrPeQlJewlVyWl6687ISOZCUPrjzF1S+DG5b6XaQYFxOLw5rKXZTTmQYjS0FHudK4r/9Lg2K4ulS3ag9v3YVsGvkHUpE1hQ0/5l2+kXJfiGQFRQzmQyt+UGW+RfdticCsto FsI0N0/M cwgXgoueEIMEcVbnG5RLrdepWS+GTGSvpygD6cwj4l43N2PVrlnAPXJIDZEsebi4KEeqgVnCP5E6eZ5RKMlKeBiPZWzzRLaypue19iyvAoT2BC14L9GL4huguh6IQx5oNuBEdrNOugbQAoruokT9nD92xTtfYwOeWKvTlysdGkls+xoeFBazJSF5tBeMAiTb4DnIGyTpH0SdaeaaXuOmhFsg2qtb27Iv466NHWHdtyNkueeBgQZcW+C+05mqekIPKMFbxWidjvTBm7ddpvyKeJk6wYDcsuKyt/CuEJOh/BADRDjNPjMUIiNjI1EHHVG4s0mhd 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 Tue, 24 Jun 2025, Mitchell Levy wrote: > The C implementations of `this_cpu_add`, `this_cpu_sub`, etc., are > optimized to save an instruction by avoiding having to compute > `this_cpu_ptr(&x)` for some per-CPU variable `x`. For example, rather > than Cool. Great progress for Rust support. Maybe we can switch the SLUB allocator over or come up with SLRB for the Slab Rust allocator ;-) > + impl PerCpuNumeric<'_, $ty> { > + /// Adds `rhs` to the per-CPU variable. > + pub fn add(&mut self, rhs: $ty) { > + // SAFETY: `self.ptr.0` is a valid offset into the per-CPU area (i.e., valid as a > + // pointer relative to the `gs` segment register) by the invariants of PerCpu. > + unsafe { > + asm!( > + concat!("add gs:[{off}], {val}"), > + off = in(reg) self.ptr.0 as *mut $ty, > + val = in(reg_byte) rhs, That looks arch specific to x86? What about ARM and other platforms?