From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 50B753914EB; Sat, 15 Aug 2026 20:58:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786827536; cv=none; b=mUL+04vRRQvGK8bh5D1iySgJPwi1zUxSmCPpajDDdchffLGQU1U9L6V+O8l4V12CtSHWJPJkx+HAMRyqDWiS/jHlbP0TDlMjuWL1oZewZXZqYScwqE08xrZodJqW47gAeaL1TnGn1bJmh3n8oK5eqcsxvs9qzGXxUHqTgyBvQg4= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786827536; c=relaxed/simple; bh=VUIhCVP18vEs3dKQxig8pMvpDlmYaXiKd+6TmPFTx5A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fiSn1VlGfL//9vg9gzCmQu/9JwIShyVufMwKORbtbRfxrS1T06xGIpEZVvEwfVQsvGM7yd7wCiPoJLDm/8ZeasRxdUmcKz8nJp//N1A9epBWXrzFQGiOYlO4/hSntVGardepEpYsJv9IYn3FCn3ZSvVMxx6jkxwdowucAnPWIO0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=naeOnKRn; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="naeOnKRn" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 88C891F00AC4; Sat, 15 Aug 2026 20:58:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1786827534; bh=krv8XEnhnCImcLWFDlxt4ypVEiMKwgztSgH5l8u1fGg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=naeOnKRnreRJ/F97wOlwAOMe7gIEE5zMTVOoLiD6/mTf6QvpHiObFeKQOnylJY/ij ZaZh3V0zH3qf6y3FRGhzgC4KRhtmfh0x1FH9eNwOWt8fk0ETcTLeOzfCXmqSqA6pNl aYxqj+371WUJf1ZMFsKeOZhZTgyTimJUiKAezWY+gzgGJZWuEufS+HjXPJAw03SwG2 mp9wkTfu8Sj71OAXQgkE67vLAQHxGYHogZejlu2tYJwELNC4ps+9qS0hQqNjCJFf74 QgEjqG6VW8LWy/iojhXG7SkH8W6taX4VHuoODTRdo/yjYMyYmpbGAUzoeYKOWqfPxK /rRgwgOhCIJsg== From: Eric Biggers To: x86@kernel.org Cc: linux-kernel@vger.kernel.org, linux-raid@vger.kernel.org, Christoph Hellwig , linux-crypto@vger.kernel.org, Herbert Xu , Taehee Yoo , netfilter-devel@vger.kernel.org, Pablo Neira Ayuso , Florian Westphal , Phil Sutter , Eric Biggers , stable@vger.kernel.org Subject: [PATCH 2/6] raid6: add missing vzeroupper to AVX2 code Date: Sat, 15 Aug 2026 13:57:46 -0700 Message-ID: <20260815205750.169336-3-ebiggers@kernel.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260815205750.169336-1-ebiggers@kernel.org> References: <20260815205750.169336-1-ebiggers@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Since the AVX2 optimized RAID6 code uses YMM registers, execute vzeroupper before returning from it. This is needed to avoid degrading the performance of any later SSE code that may happen to be executed. Fixes: 2c935842bdb4 ("lib/raid6: Add AVX2 optimized gen_syndrome functions") Fixes: 7056741fd9fc ("lib/raid6: Add AVX2 optimized recovery functions") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers --- lib/raid/raid6/x86/avx2.c | 6 ++++++ lib/raid/raid6/x86/recov_avx2.c | 2 ++ 2 files changed, 8 insertions(+) diff --git a/lib/raid/raid6/x86/avx2.c b/lib/raid/raid6/x86/avx2.c index 7d829c669ea7..3cc2fe7ac42c 100644 --- a/lib/raid/raid6/x86/avx2.c +++ b/lib/raid/raid6/x86/avx2.c @@ -67,6 +67,7 @@ static void raid6_avx21_gen_syndrome(int disks, size_t bytes, void **ptrs) } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -115,6 +116,7 @@ static void raid6_avx21_xor_syndrome(int disks, int start, int stop, } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -175,6 +177,7 @@ static void raid6_avx22_gen_syndrome(int disks, size_t bytes, void **ptrs) } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -243,6 +246,7 @@ static void raid6_avx22_xor_syndrome(int disks, int start, int stop, } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -334,6 +338,7 @@ static void raid6_avx24_gen_syndrome(int disks, size_t bytes, void **ptrs) } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -444,6 +449,7 @@ static void raid6_avx24_xor_syndrome(int disks, int start, int stop, asm volatile("vmovntdq %%ymm14,%0" : "=m" (q[d+96])); } asm volatile("sfence" : : : "memory"); + asm volatile("vzeroupper"); kernel_fpu_end(); } diff --git a/lib/raid/raid6/x86/recov_avx2.c b/lib/raid/raid6/x86/recov_avx2.c index a714a780a2d8..820871046e30 100644 --- a/lib/raid/raid6/x86/recov_avx2.c +++ b/lib/raid/raid6/x86/recov_avx2.c @@ -176,6 +176,7 @@ static void raid6_2data_recov_avx2(int disks, size_t bytes, int faila, #endif } + asm volatile("vzeroupper"); kernel_fpu_end(); } @@ -293,6 +294,7 @@ static void raid6_datap_recov_avx2(int disks, size_t bytes, int faila, #endif } + asm volatile("vzeroupper"); kernel_fpu_end(); } -- 2.55.0