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 lists.ozlabs.org (lists.ozlabs.org [112.213.38.117]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 57D42FD8FC7 for ; Thu, 26 Feb 2026 15:12:09 +0000 (UTC) Received: from boromir.ozlabs.org (localhost [127.0.0.1]) by lists.ozlabs.org (Postfix) with ESMTP id 4fMFL05Jp1z3bjN; Fri, 27 Feb 2026 02:11:52 +1100 (AEDT) Authentication-Results: lists.ozlabs.org; arc=none smtp.remote-ip="2607:7c80:54:3::133" ARC-Seal: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1772118712; cv=none; b=dBFDpWLAe9SApifwDpU+gFfz86osE/zM17HPYX9/h0qW3MmPbI4Po3oyaj69L1nX7UZ6RsPw3uKuoU6YAs1gjDEp6RK2yUN0QG488KIq9Rus7nHcMGT0gGtXIE5xB5vvjjhP2rKeN61U4VhYZAyznMRAEoFI+JpjQ/SO91fz4f8/ISTaPs1sHRGNoEJPbK5aP/GvdrYYs2/O43Wu/YHmAy1/rPTVinGidikFo6jW8vYl5qXQXbp0hTumsTMJE+eq+NNmwRyNOV+9ee9Of8/W+dP8mp+sJXvr95Mn6c9SjZED5lMFK0uzQXEgL7pj4Fa3hOxY/9/8Avi+e5Kb+C+dEA== ARC-Message-Signature: i=1; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1772118712; c=relaxed/relaxed; bh=qP+8VdwzX18rY5bvgdY1sWuLjPIGZuDXB9vEoLM33a0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=k3Q0b6Cpxecp5MbLqal4zFT2zugFDK3XKpZhewLhuo+D++AnBe8Q60xItl4a1uj4cyomvM5JxOEa5BKrBLCzc7NI6gdqtr4C42Hy0u+QgqwTIxpvJeNA/pSr7+PJ0GI9w+i7S0wpw0oYV3Uj5ywe0ntCm5HTdyHMneFQBqx7CqXnuU395OVtiDpTFT1EiqOOxvoQDoZg71aZF4LD+BBhfDjqLHZTip+vEsGY2JVN6c9RWsX4VJkAXeP1d+qfH06fMj8w+/oTBDQfZDmTH804HBjjysDv2p6vL8N32Tcmo9JyfzxRbJmaadQ33XFVme26Ug5AX8SC56GkAhJbWl4TiQ== ARC-Authentication-Results: i=1; lists.ozlabs.org; dmarc=fail (p=none dis=none) header.from=lst.de; dkim=pass (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=QR03zetW; dkim-atps=neutral; spf=none (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=batv+c5cab09b19de097b6dd3+8222+infradead.org+hch@bombadil.srs.infradead.org; receiver=lists.ozlabs.org) smtp.mailfrom=bombadil.srs.infradead.org Authentication-Results: lists.ozlabs.org; dmarc=fail (p=none dis=none) header.from=lst.de Authentication-Results: lists.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=infradead.org header.i=@infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=QR03zetW; dkim-atps=neutral Authentication-Results: lists.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=bombadil.srs.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=batv+c5cab09b19de097b6dd3+8222+infradead.org+hch@bombadil.srs.infradead.org; receiver=lists.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 4fMFKs2kGtz2xHX for ; Fri, 27 Feb 2026 02:11:43 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:In-Reply-To:References; bh=qP+8VdwzX18rY5bvgdY1sWuLjPIGZuDXB9vEoLM33a0=; b=QR03zetWTad5XyZ1Gw4pLwB3nJ bBW2z8/AfBzf6ywTsDIo41OiCTtpsjYjgepK9QsrzsI7cElVXtM7rURrehCLHg7n3dJp3pEEuguPs IV28EsbN9NXPibalVzcYNCMt7WUj5amt2cLL/uhfFZSbZasPO8mE2vPJU0F6TCesV+k682eK7OpEb 0s0PEhS0Lb4d7H7xxKtb1UPzv/QjIpRm5y7UyO6jsg8yFhe2aE6J9EjqkFmDdqerweEN4NKLgisiM Kabaz6sDQQzQIMT6aHsvYmfsxULpzWH25hK5F1NxFrVLPKvob/3mX0qd2TgoR9ypObigmjPl/bDFb OUEtcJnA==; Received: from [4.28.11.157] (helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.98.2 #2 (Red Hat Linux)) id 1vvd1A-00000006Pxh-0z8F; Thu, 26 Feb 2026 15:11:08 +0000 From: Christoph Hellwig To: Andrew Morton Cc: Richard Henderson , Matt Turner , Magnus Lindholm , Russell King , Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , "Christophe Leroy (CS GROUP)" , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , "David S. Miller" , Andreas Larsson , Richard Weinberger , Anton Ivanov , Johannes Berg , Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, "H. Peter Anvin" , Herbert Xu , Dan Williams , Chris Mason , David Sterba , Arnd Bergmann , Song Liu , Yu Kuai , Li Nan , linux-alpha@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, loongarch@lists.linux.dev, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, sparclinux@vger.kernel.org, linux-um@lists.infradead.org, linux-crypto@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-arch@vger.kernel.org, linux-raid@vger.kernel.org Subject: cleanup the RAID5 XOR library Date: Thu, 26 Feb 2026 07:10:12 -0800 Message-ID: <20260226151106.144735-1-hch@lst.de> X-Mailer: git-send-email 2.47.3 X-Mailing-List: linuxppc-dev@lists.ozlabs.org List-Id: List-Help: List-Owner: List-Post: List-Archive: , List-Subscribe: , , List-Unsubscribe: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Hi all, the XOR library used for the RAID5 parity is a bit of a mess right now. The main file sits in crypto/ despite not being cryptography and not using the crypto API, with the generic implementations sitting in include/asm-generic and the arch implementations sitting in an asm/ header in theory. The latter doesn't work for many cases, so architectures often build the code directly into the core kernel, or create another module for the architecture code. Changes this to a single module in lib/ that also contains the architecture optimizations, similar to the library work Eric Biggers has done for the CRC and crypto libraries later. After that it changes to better calling conventions that allow for smarter architecture implementations (although none is contained here yet), and uses static_call to avoid indirection function call overhead. A git tree is also available here: git://git.infradead.org/users/hch/misc.git xor-improvements Gitweb: https://git.infradead.org/?p=users/hch/misc.git;a=shortlog;h=refs/heads/xor-improvements Diffstat: arch/arm64/include/asm/xor.h | 73 -- arch/loongarch/include/asm/xor.h | 68 -- arch/loongarch/include/asm/xor_simd.h | 34 - arch/loongarch/lib/xor_simd_glue.c | 72 -- arch/powerpc/include/asm/xor.h | 47 - arch/powerpc/include/asm/xor_altivec.h | 22 arch/powerpc/lib/xor_vmx.h | 22 arch/powerpc/lib/xor_vmx_glue.c | 63 -- arch/riscv/include/asm/xor.h | 68 -- arch/s390/include/asm/xor.h | 21 arch/sparc/include/asm/xor.h | 9 arch/sparc/include/asm/xor_64.h | 79 --- arch/um/include/asm/xor.h | 24 arch/x86/include/asm/xor_64.h | 28 - b/arch/alpha/Kconfig | 1 b/arch/arm/Kconfig | 1 b/arch/arm/lib/Makefile | 5 b/arch/arm64/Kconfig | 1 b/arch/arm64/lib/Makefile | 6 b/arch/loongarch/Kconfig | 1 b/arch/loongarch/lib/Makefile | 2 b/arch/powerpc/Kconfig | 1 b/arch/powerpc/lib/Makefile | 5 b/arch/riscv/Kconfig | 1 b/arch/riscv/lib/Makefile | 1 b/arch/s390/Kconfig | 1 b/arch/s390/lib/Makefile | 2 b/arch/sparc/Kconfig | 1 b/arch/sparc/include/asm/asm-prototypes.h | 1 b/arch/sparc/lib/Makefile | 2 b/arch/um/Kconfig | 1 b/arch/x86/Kconfig | 1 b/crypto/Kconfig | 2 b/crypto/Makefile | 1 b/crypto/async_tx/async_xor.c | 16 b/fs/btrfs/raid56.c | 27 - b/include/asm-generic/Kbuild | 1 b/include/linux/raid/xor.h | 28 - b/lib/Kconfig | 1 b/lib/Makefile | 2 b/lib/raid/Kconfig | 7 b/lib/raid/Makefile | 2 b/lib/raid/xor/Makefile | 50 ++ b/lib/raid/xor/alpha/xor.c | 46 - b/lib/raid/xor/alpha/xor_arch.h | 22 b/lib/raid/xor/arm/xor-neon-glue.c | 19 b/lib/raid/xor/arm/xor-neon.c | 22 b/lib/raid/xor/arm/xor.c | 105 ---- b/lib/raid/xor/arm/xor_arch.h | 22 b/lib/raid/xor/arm64/xor-neon-glue.c | 26 + b/lib/raid/xor/arm64/xor-neon.c | 94 +-- b/lib/raid/xor/arm64/xor-neon.h | 6 b/lib/raid/xor/arm64/xor_arch.h | 21 b/lib/raid/xor/loongarch/xor_arch.h | 33 + b/lib/raid/xor/loongarch/xor_simd_glue.c | 37 + b/lib/raid/xor/powerpc/xor_arch.h | 22 b/lib/raid/xor/powerpc/xor_vmx.c | 40 - b/lib/raid/xor/powerpc/xor_vmx.h | 10 b/lib/raid/xor/powerpc/xor_vmx_glue.c | 28 + b/lib/raid/xor/riscv/xor-glue.c | 25 + b/lib/raid/xor/riscv/xor_arch.h | 17 b/lib/raid/xor/s390/xor.c | 15 b/lib/raid/xor/s390/xor_arch.h | 13 b/lib/raid/xor/sparc/xor-niagara-glue.c | 33 + b/lib/raid/xor/sparc/xor-niagara.S | 346 -------------- b/lib/raid/xor/sparc/xor-sparc32.c | 32 - b/lib/raid/xor/sparc/xor-vis-glue.c | 34 + b/lib/raid/xor/sparc/xor-vis.S | 348 ++++++++++++++ b/lib/raid/xor/sparc/xor_arch.h | 35 + b/lib/raid/xor/um/xor_arch.h | 9 b/lib/raid/xor/x86/xor-avx.c | 52 -- b/lib/raid/xor/x86/xor-mmx.c | 120 +--- b/lib/raid/xor/x86/xor-sse.c | 105 +--- b/lib/raid/xor/x86/xor_arch.h | 36 + b/lib/raid/xor/xor-32regs-prefetch.c | 267 ++++++++++ b/lib/raid/xor/xor-32regs.c | 217 ++++++++ b/lib/raid/xor/xor-8regs-prefetch.c | 146 +++++ b/lib/raid/xor/xor-8regs.c | 103 ++++ b/lib/raid/xor/xor-core.c | 187 +++++++ b/lib/raid/xor/xor_impl.h | 60 ++ crypto/xor.c | 174 ------- include/asm-generic/xor.h | 738 ------------------------------ 82 files changed, 2033 insertions(+), 2433 deletions(-)