Commit 9dc106fa authored by Ard Biesheuvel's avatar Ard Biesheuvel
Browse files

net/mlx5: Switch to more abstract scoped ksimd guard API on arm64



Instead of calling kernel_neon_begin/end directly, switch to the scoped
guard API which encapsulates those calls. This is needed because the
prototypes of those APIs are going to be modified and will require a
kernel mode FP/SIMD buffer to be provided, which the scoped guard API
will do transparently.

Cc: Saeed Mahameed <saeedm@nvidia.com>
Cc: Leon Romanovsky <leon@kernel.org>
Cc: Tariq Toukan <tariqt@nvidia.com>
Cc: Mark Bloch <mbloch@nvidia.com>
Reviewed-by: default avatarJonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent ab5718f0
Loading
Loading
Loading
Loading
+10 −9
Original line number Diff line number Diff line
@@ -9,6 +9,7 @@

#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && IS_ENABLED(CONFIG_ARM64)
#include <asm/neon.h>
#include <asm/simd.h>
#endif

#define TEST_WC_NUM_WQES 255
@@ -264,15 +265,15 @@ static void mlx5_iowrite64_copy(struct mlx5_wc_sq *sq, __be32 mmio_wqe[16],
{
#if IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && IS_ENABLED(CONFIG_ARM64)
	if (cpu_has_neon()) {
		kernel_neon_begin();
		asm volatile
		(".arch_extension simd\n\t"
		scoped_ksimd() {
			asm volatile(
				".arch_extension simd\n\t"
				"ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [%0]\n\t"
				"st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [%1]"
				:
				: "r"(mmio_wqe), "r"(sq->bfreg.map + offset)
				: "memory", "v0", "v1", "v2", "v3");
		kernel_neon_end();
		}
		return;
	}
#endif