mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
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: Jonathan Cameron <jonathan.cameron@huawei.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This commit is contained in:
@@ -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"
|
||||
"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();
|
||||
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");
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user