#include <asm/fpu/api.h>
],[
],[
- AC_DEFINE(HAVE_KERNEL_FPU_API_HEADER, 1, [kernel has asm/fpu/api.h])
+ AC_DEFINE(HAVE_KERNEL_FPU_API_HEADER, 1,
+ [kernel has asm/fpu/api.h])
AC_MSG_RESULT(asm/fpu/api.h)
],[
AC_MSG_RESULT(i387.h & xcr.h)
kernel_fpu_end();
], [kernel_fpu_begin], [arch/x86/kernel/fpu/core.c], [
AC_MSG_RESULT(kernel_fpu_*)
- AC_DEFINE(HAVE_KERNEL_FPU, 1, [kernel has kernel_fpu_* functions])
- AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1, [kernel exports FPU functions])
+ AC_DEFINE(HAVE_KERNEL_FPU, 1,
+ [kernel has kernel_fpu_* functions])
+ AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1,
+ [kernel exports FPU functions])
],[
ZFS_LINUX_TRY_COMPILE_SYMBOL([
#include <linux/module.h>
* USER API:
*
* Kernel fpu methods:
- * kfpu_begin()
- * kfpu_end()
+ * kfpu_allowed()
+ * kfpu_initialize()
+ * kfpu_begin()
+ * kfpu_end()
*/
#ifndef _SIMD_AARCH64_H
* USER API:
*
* Kernel fpu methods:
- * kfpu_begin()
- * kfpu_end()
+ * kfpu_allowed()
+ * kfpu_initialize()
+ * kfpu_begin()
+ * kfpu_end()
*
* SIMD support:
*
* all relevant feature test functions should be called.
*
* Supported features:
- * zfs_sse_available()
- * zfs_sse2_available()
- * zfs_sse3_available()
- * zfs_ssse3_available()
- * zfs_sse4_1_available()
- * zfs_sse4_2_available()
+ * zfs_sse_available()
+ * zfs_sse2_available()
+ * zfs_sse3_available()
+ * zfs_ssse3_available()
+ * zfs_sse4_1_available()
+ * zfs_sse4_2_available()
*
- * zfs_avx_available()
- * zfs_avx2_available()
+ * zfs_avx_available()
+ * zfs_avx2_available()
*
- * zfs_bmi1_available()
- * zfs_bmi2_available()
+ * zfs_bmi1_available()
+ * zfs_bmi2_available()
*
- * zfs_avx512f_available()
- * zfs_avx512cd_available()
- * zfs_avx512er_available()
- * zfs_avx512pf_available()
- * zfs_avx512bw_available()
- * zfs_avx512dq_available()
- * zfs_avx512vl_available()
- * zfs_avx512ifma_available()
- * zfs_avx512vbmi_available()
+ * zfs_avx512f_available()
+ * zfs_avx512cd_available()
+ * zfs_avx512er_available()
+ * zfs_avx512pf_available()
+ * zfs_avx512bw_available()
+ * zfs_avx512dq_available()
+ * zfs_avx512vl_available()
+ * zfs_avx512ifma_available()
+ * zfs_avx512vbmi_available()
*
* NOTE(AVX-512VL): If using AVX-512 instructions with 128Bit registers
- * also add zfs_avx512vl_available() to feature check.
+ * also add zfs_avx512vl_available() to feature check.
*/
#ifndef _SIMD_X86_H
* Descriptions of supported instruction sets
*/
static const cpuid_feature_desc_t cpuid_features[] = {
- [SSE] = {1U, 0U, 1U << 25, EDX },
+ [SSE] = {1U, 0U, 1U << 25, EDX },
[SSE2] = {1U, 0U, 1U << 26, EDX },
[SSE3] = {1U, 0U, 1U << 0, ECX },
[SSSE3] = {1U, 0U, 1U << 9, ECX },
}
aes_supp_impl_cnt = c;
- /* set fastest implementation. assume hardware accelerated is fastest */
+ /*
+ * Set the fastest implementation given the assumption that the
+ * hardware accelerated version is the fastest.
+ */
#if defined(__x86_64)
#if defined(HAVE_AES)
- if (aes_aesni_impl.is_supported())
+ if (aes_aesni_impl.is_supported()) {
memcpy(&aes_fastest_impl, &aes_aesni_impl,
sizeof (aes_fastest_impl));
- else
+ } else
#endif
+ {
memcpy(&aes_fastest_impl, &aes_x86_64_impl,
sizeof (aes_fastest_impl));
+ }
#else
memcpy(&aes_fastest_impl, &aes_generic_impl,
sizeof (aes_fastest_impl));
/* Indicate that benchmark has been completed */
static boolean_t gcm_impl_initialized = B_FALSE;
-/* Select aes implementation */
+/* Select GCM implementation */
#define IMPL_FASTEST (UINT32_MAX)
#define IMPL_CYCLE (UINT32_MAX-1)
* hardware accelerated version is the fastest.
*/
#if defined(__x86_64) && defined(HAVE_PCLMULQDQ)
- if (gcm_pclmulqdq_impl.is_supported())
+ if (gcm_pclmulqdq_impl.is_supported()) {
memcpy(&gcm_fastest_impl, &gcm_pclmulqdq_impl,
sizeof (gcm_fastest_impl));
- else
+ } else
#endif
+ {
memcpy(&gcm_fastest_impl, &gcm_generic_impl,
sizeof (gcm_fastest_impl));
+ }
strcpy(gcm_fastest_impl.name, "fastest");
* If we are called before init(), user preference will be saved in
* user_sel_impl, and applied in later init() call. This occurs when module
* parameter is specified on module load. Otherwise, directly update
- * icp_aes_impl.
+ * icp_gcm_impl.
*
* @val Name of gcm implementation to use
* @param Unused.
#endif /* _AES_IMPL */
/*
- * Methods used to define aes implementation
+ * Methods used to define AES implementation
*
* @aes_gen_f Key generation
* @aes_enc_f Function encrypts one block
#include <sys/crypto/common.h>
/*
- * Methods used to define gcm implementation
+ * Methods used to define GCM implementation
*
* @gcm_mul_f Perform carry-less multiplication
* @gcm_will_work_f Function tests whether implementation will function
*/
-typedef void (*gcm_mul_f)(uint64_t *, uint64_t *, uint64_t *);
+typedef void (*gcm_mul_f)(uint64_t *, uint64_t *, uint64_t *);
typedef boolean_t (*gcm_will_work_f)(void);
#define GCM_IMPL_NAME_MAX (16)
if (PTR_ERR(tsk) == -ENOMEM)
continue;
return (NULL);
- } else
+ } else {
return (tsk);
+ }
} while (1);
}
EXPORT_SYMBOL(spl_kthread_create);
}
#if defined(_KERNEL)
-/* Fletcher 4 kstats */
-
+/*
+ * Fletcher 4 kstats
+ */
static int
fletcher_4_kstat_headers(char *buf, size_t size)
{
zio_cksum_t zc;
uint32_t i, l, sel_save = IMPL_READ(fletcher_4_impl_chosen);
-
fletcher_checksum_func_t *fletcher_4_test = native ?
fletcher_4_native : fletcher_4_byteswap;