lib/raid/raid6/x86/pq_arch.h

Source file repositories/reference/linux-study-clean/lib/raid/raid6/x86/pq_arch.h

File Facts

System
Linux kernel
Corpus path
lib/raid/raid6/x86/pq_arch.h
Extension
.h
Size
2889 bytes
Lines
97
Domain
Kernel Services
Bucket
lib
Inferred role
Kernel Services: implementation source
Status
source implementation candidate

Why This File Exists

Shared kernel service surface used by multiple subsystems, including helpers, cryptography, virtualization support, and async I/O infrastructure.

Dependency Surface

Detected Declarations

Annotated Snippet

if (raid6_has_avx512()) {
			raid6_algo_add(&raid6_avx512x1);
			raid6_algo_add(&raid6_avx512x2);
			if (IS_ENABLED(CONFIG_X86_64))
				raid6_algo_add(&raid6_avx512x4);
		}
	} else if (IS_ENABLED(CONFIG_X86_64) || raid6_has_sse2()) {
		/* x86_64 can assume SSE2 as baseline */
		raid6_algo_add(&raid6_sse2x1);
		raid6_algo_add(&raid6_sse2x2);
		if (IS_ENABLED(CONFIG_X86_64))
			raid6_algo_add(&raid6_sse2x4);
	} else {
		raid6_algo_add_default();
		if (raid6_has_sse1_or_mmxext()) {
			raid6_algo_add(&raid6_sse1x1);
			raid6_algo_add(&raid6_sse1x2);
		} else if (boot_cpu_has(X86_FEATURE_MMX)) {
			raid6_algo_add(&raid6_mmxx1);
			raid6_algo_add(&raid6_mmxx2);
		}
	}

	if (raid6_has_avx512())
		raid6_recov_algo_add(&raid6_recov_avx512);
	else if (raid6_has_avx2())
		raid6_recov_algo_add(&raid6_recov_avx2);
	else if (raid6_has_ssse3())
		raid6_recov_algo_add(&raid6_recov_ssse3);
}

Annotation

Implementation Notes