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 C6957C77B7A for ; Wed, 31 May 2023 14:47:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0D7896B0072; Wed, 31 May 2023 10:47:52 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 087E68E0003; Wed, 31 May 2023 10:47:52 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E92AB8E0001; Wed, 31 May 2023 10:47:51 -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 DA50B6B0072 for ; Wed, 31 May 2023 10:47:51 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 7F829AE141 for ; Wed, 31 May 2023 14:47:51 +0000 (UTC) X-FDA: 80850829542.12.EF903A0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf20.hostedemail.com (Postfix) with ESMTP id 72D091C0018 for ; Wed, 31 May 2023 14:47:48 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of mark.rutland@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=mark.rutland@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1685544469; 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; bh=frA99a75+2fSy1bLFWOhx3RjgRj0GiYpUvklKhmJEFM=; b=qXveECPhldmkVUW9eLOfUeRkLtirjTPmJYFA4cz40YkCO99/SXhB7378cNYzadU56DT+5b ORLe1XkRQffUhf6yryBb8UnLAcE0ULtMkINLgAFmk1uhWVDfu3XrrhLwEI11YwOyAEfVcd xtLdOfTEO/fScRNGehjlL8VhIqZv9z8= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf20.hostedemail.com: domain of mark.rutland@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=mark.rutland@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1685544469; a=rsa-sha256; cv=none; b=C1NxmVAtrvHIfCU2VYC4NFpxjMITh+U+M3/OVkx6ffmlro8swFTtYaRM66S7i+qi7VIWbY 3PZ7bbhZAO5liJyJy+BjnhgT7Cy7Y8xG4pdyHEPdrNQh+Fmv46GtVXg4WpDAT9nndMksrD ItBBTIay2nCMXdtuVEocL3SSyOfunZk= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 76BE21042; Wed, 31 May 2023 07:48:32 -0700 (PDT) Received: from FVFF77S0Q05N.cambridge.arm.com (FVFF77S0Q05N.cambridge.arm.com [10.1.33.144]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8273A3F663; Wed, 31 May 2023 07:47:41 -0700 (PDT) Date: Wed, 31 May 2023 15:47:31 +0100 From: Mark Rutland To: Peter Zijlstra Cc: torvalds@linux-foundation.org, corbet@lwn.net, will@kernel.org, boqun.feng@gmail.com, catalin.marinas@arm.com, dennis@kernel.org, tj@kernel.org, cl@linux.com, hca@linux.ibm.com, gor@linux.ibm.com, agordeev@linux.ibm.com, borntraeger@linux.ibm.com, svens@linux.ibm.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com, joro@8bytes.org, suravee.suthikulpanit@amd.com, robin.murphy@arm.com, dwmw2@infradead.org, baolu.lu@linux.intel.com, Arnd Bergmann , Herbert Xu , davem@davemloft.net, penberg@kernel.org, rientjes@google.com, iamjoonsoo.kim@lge.com, Andrew Morton , vbabka@suse.cz, roman.gushchin@linux.dev, 42.hyeyoo@gmail.com, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-s390@vger.kernel.org, iommu@lists.linux.dev, linux-arch@vger.kernel.org, linux-crypto@vger.kernel.org, sfr@canb.auug.org.au, mpe@ellerman.id.au, James.Bottomley@hansenpartnership.com, deller@gmx.de, linux-parisc@vger.kernel.org Subject: Re: [PATCH 00/12] Introduce cmpxchg128() -- aka. the demise of cmpxchg_double() Message-ID: References: <20230531130833.635651916@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230531130833.635651916@infradead.org> X-Rspamd-Queue-Id: 72D091C0018 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: tey5k6dsezq81a35ah17jao65kex5m96 X-HE-Tag: 1685544468-332827 X-HE-Meta: U2FsdGVkX19hVybRYlGnHUHOQV/fdSpwR2DgU24iAN1/0Vwy84PxAzuZXPhoYmQCZRIkYi5RigN45lnKiowjgehqbRDc0/B6uPn9+KtaoX5Hwv+M6Wet820kOrn0rYe7L21j9kTg4nrBPCR+dphtrxVXNQlzvAcJpwOXTQNxznGXqDCUKTyx0lpQzsOTR0qSzlLlHq78YdgWXHWXYtgZdIUAKzJMzi7NA8/MD6iwQ4Zm7+vZ2LwlsM43pTAnXRUM1aRa3WRkbdYJOL9Gk4ATP9P2Rq739jHSiq2PLFzEEy+d533yBFVTyzAaDyE4BOaB8Ctizg8yyUBh2R3AKFahipfN3iuNfFsL3t461wvvy6b2etjTpES7aldoSgWL9plO4v9XXYJoYS/jUI5kxMLXxvqmVu/lBHRfPdhZfmqF3udZ1xqLHexWFvxoEvH6J8przuF7EwF1UJYk9Ocp/tCOj9DUcC8M8ysAuWI+TnmiTb9OA3gQBmtSgavdV6wcNXSpHVNiSt1ulP3HRgyZIIz5U4qF0g1Oa4pd2P+4Vd8wMKi0s2Rm9bMQJelFyO/EaeaXKcJ3R8UbWHwPicpg+3IulZwYahryTmpnYx9RqOufadN2k9CiolvFybGsTqU50rELdyOXxOPgx750z5RL/iY14QJqXvpbnhxiudwsb58JsyLlItuumispHLOxSr8EPR2lRjjhHzgMwRxPIAqFqCXe/4IyetfFnBSlMGhLBFqBztqHiffAohff8ObUYSzcljYJ5ysbewEU/ZYiEN/ZbdFJvTDX1Fvb6iBgsZM8uCGHyq8nLiJXa1zo9r/jh3BhE/vZH+B7pc8nIxSuZv923EPzRwsiig/1N26TeIiaayCDK+JvLP0EVuyjQJHvVM4mUmEDin9MA4Y41isZPm2hMISRGqYCX/rpRpvXgqFYMDX2gGoeehu6HtzC0GsbAA3UNj3vzCtzK5ETAHHl5Q1hUvm j4BRKwla M4mxSSmZ/fY+MQNls9JAU3Y6xH1woOBL1wliRxpaL9o5hQkkHZw62miO/PSJV1PagtWyfI8OnHPvuDVKjpdrYoVhUxTDHs/7IVPCw9mVHnZhpcNDQsSQpkFN1qo8Rt7QOAhVSd2j5MXYgzIuv19yJdKX0gcAu21fwNNmmNUMSeD9ifpTq1FX4MSLbG85heBWkGzyOX3RX3Z2Y1I/fT3nzOLEf7Zsh5JUnluWbObkCPicOBw/3iZB+NlDrW7zj9w/Hy4wXCHXIXBLj/2J/gruwIoWyjybEOeS5kIrXEA9uCRjMBOVond5gp4epwGzGEgtEPsyf0h3+SJCgxvJh+h3malP/d+v2Su67/pamDmJjh88apRezKD56Pl7TCroL/CCEnMt/9qtJWPS0ZaGO7jkW2d57a/YZZNxBnpfoVV7qyu1NYkrUUHVqP0EdhBywWQnac5Ls 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: On Wed, May 31, 2023 at 03:08:33PM +0200, Peter Zijlstra wrote: > Hi! > > After much breaking of things, find here the improved version. > > Since v3: > > - unbreak everything that does *NOT* have cmpxchg128() > > Notably this_cpu_cmpxchg_double() is used unconditionally by SLUB > which means that this_cpu_try_cmpxchg128() needs to be unconditionally > available on all 64bit architectures. > > - fixed up x86/x86_64 cmpxchg{8,16}b emulation for this_cpu_cmpxchg{64,128}() > > - introduce {raw,this}_cpu_try_cmpxchg*() > > - add fallback for !__SIZEOF_INT128__ 64bit architectures > > Sadly there are supported 64bit architecture/compiler combinations that do > not have __SIZEOF_INT128__, specifically it was found that HPPA64 only added > this with GCC-11. > > this is yuck, and ideally we'd simply raise compiler requirements, but this > 'works'. The patches look good to me, and I used my local cross-build script to build test this with the kernel.org GCC 10.3.0 cross toolchain for all of the following arch/triplet/config combinations: alpha alpha-linux defconfig arc arc-linux defconfig arm arm-linux-gnueabi multi_v4t_defconfig arm arm-linux-gnueabi multi_v5_defconfig arm arm-linux-gnueabi multi_v7_defconfig arm arm-linux-gnueabi omap1_defconfig arm64 aarch64-linux defconfig csky csky-linux defconfig i386 i386-linux defconfig ia64 ia64-linux defconfig m68k m68k-linux defconfig microblaze microblaze-linux defconfig mips mips-linux 32r1_defconfig mips mips-linux 32r2_defconfig mips mips-linux 32r6_defconfig mips mips64-linux 64r1_defconfig mips mips64-linux 64r2_defconfig mips mips64-linux 64r6_defconfig nios2 nios2-linux defconfig openrisc or1k-linux defconfig parisc hppa-linux generic-32bit_defconfig parisc hppa64-linux generic-64bit_defconfig powerpc powerpc-linux ppc40x_defconfig powerpc powerpc64-linux ppc64_defconfig powerpc powerpc64-linux ppc64e_defconfig riscv riscv32-linux rv32_defconfig riscv riscv64-linux defconfig s390 s390-linux defconfig sh sh4-linux defconfig sparc sparc-linux sparc32_defconfig sparc sparc64-linux sparc64_defconfig x86_64 x86_64-linux defconfig xtensa xtensa-linux defconfig ... and everything seemed happy. I've also boot-tested arm64 defconfig. So FWIW, for the series: Reviewed-by: Mark Rutland Tested-by: Mark Rutland > My plan is to re-add this to tip/locking/core and thus -next later this week. I'll need to rebase my kerneldoc series atop this, so getting this into a stable branch soon would be great! Thanks, Mark. > > Also available at: > > git://git.kernel.org/pub/scm/linux/kernel/git/peterz/queue.git locking/core > > --- > Documentation/core-api/this_cpu_ops.rst | 2 - > arch/arm64/include/asm/atomic_ll_sc.h | 56 +++--- > arch/arm64/include/asm/atomic_lse.h | 39 ++--- > arch/arm64/include/asm/cmpxchg.h | 48 ++---- > arch/arm64/include/asm/percpu.h | 30 ++-- > arch/s390/include/asm/cmpxchg.h | 32 +--- > arch/s390/include/asm/cpu_mf.h | 2 +- > arch/s390/include/asm/percpu.h | 34 ++-- > arch/s390/kernel/perf_cpum_sf.c | 16 +- > arch/x86/include/asm/cmpxchg.h | 25 --- > arch/x86/include/asm/cmpxchg_32.h | 2 +- > arch/x86/include/asm/cmpxchg_64.h | 63 ++++++- > arch/x86/include/asm/percpu.h | 102 ++++++----- > arch/x86/lib/Makefile | 3 +- > arch/x86/lib/cmpxchg16b_emu.S | 43 +++-- > arch/x86/lib/cmpxchg8b_emu.S | 67 ++++++-- > drivers/iommu/amd/amd_iommu_types.h | 9 +- > drivers/iommu/amd/iommu.c | 10 +- > drivers/iommu/intel/irq_remapping.c | 8 +- > include/asm-generic/percpu.h | 257 ++++++++++++++++++++++------ > include/crypto/b128ops.h | 14 +- > include/linux/atomic/atomic-arch-fallback.h | 95 +++++++++- > include/linux/atomic/atomic-instrumented.h | 93 ++++++++-- > include/linux/dmar.h | 125 +++++++------- > include/linux/percpu-defs.h | 45 ++--- > include/linux/slub_def.h | 12 +- > include/linux/types.h | 12 ++ > include/uapi/linux/types.h | 4 + > lib/crypto/curve25519-hacl64.c | 2 - > lib/crypto/poly1305-donna64.c | 2 - > mm/slab.h | 53 +++++- > mm/slub.c | 139 +++++++++------ > scripts/atomic/gen-atomic-fallback.sh | 4 +- > scripts/atomic/gen-atomic-instrumented.sh | 19 +- > 34 files changed, 952 insertions(+), 515 deletions(-) >