hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/arch/x86/crypto/crct10dif-pclmul_glue.c
....@@ -26,24 +26,19 @@
2626 #include <linux/module.h>
2727 #include <linux/crc-t10dif.h>
2828 #include <crypto/internal/hash.h>
29
+#include <crypto/internal/simd.h>
2930 #include <linux/init.h>
3031 #include <linux/string.h>
3132 #include <linux/kernel.h>
32
-#include <asm/fpu/api.h>
3333 #include <asm/cpufeatures.h>
3434 #include <asm/cpu_device_id.h>
35
+#include <asm/simd.h>
3536
36
-asmlinkage __u16 crc_t10dif_pcl(__u16 crc, const unsigned char *buf,
37
- size_t len);
37
+asmlinkage u16 crc_t10dif_pcl(u16 init_crc, const u8 *buf, size_t len);
3838
3939 struct chksum_desc_ctx {
4040 __u16 crc;
4141 };
42
-
43
-/*
44
- * Steps through buffer one byte at at time, calculates reflected
45
- * crc using table.
46
- */
4742
4843 static int chksum_init(struct shash_desc *desc)
4944 {
....@@ -59,7 +54,7 @@
5954 {
6055 struct chksum_desc_ctx *ctx = shash_desc_ctx(desc);
6156
62
- if (irq_fpu_usable()) {
57
+ if (length >= 16 && crypto_simd_usable()) {
6358 kernel_fpu_begin();
6459 ctx->crc = crc_t10dif_pcl(ctx->crc, data, length);
6560 kernel_fpu_end();
....@@ -78,7 +73,7 @@
7873
7974 static int __chksum_finup(__u16 crc, const u8 *data, unsigned int len, u8 *out)
8075 {
81
- if (irq_fpu_usable()) {
76
+ if (len >= 16 && crypto_simd_usable()) {
8277 kernel_fpu_begin();
8378 *(__u16 *)out = crc_t10dif_pcl(crc, data, len);
8479 kernel_fpu_end();
....@@ -119,7 +114,7 @@
119114 };
120115
121116 static const struct x86_cpu_id crct10dif_cpu_id[] = {
122
- X86_FEATURE_MATCH(X86_FEATURE_PCLMULQDQ),
117
+ X86_MATCH_FEATURE(X86_FEATURE_PCLMULQDQ, NULL),
123118 {}
124119 };
125120 MODULE_DEVICE_TABLE(x86cpu, crct10dif_cpu_id);