/* SPDX-License-Identifier: GPL-2.0-or-later */ #include extern const struct raid6_calls raid6_altivec1; extern const struct raid6_calls raid6_altivec2; extern const struct raid6_calls raid6_altivec4; extern const struct raid6_calls raid6_altivec8; extern const struct raid6_calls raid6_vpermxor1; extern const struct raid6_calls raid6_vpermxor2; extern const struct raid6_calls raid6_vpermxor4; extern const struct raid6_calls raid6_vpermxor8; static __always_inline void __init arch_raid6_init(void) { raid6_algo_add_default(); /* This assumes either all CPUs have Altivec or none does */ if (cpu_has_feature(CPU_FTR_ALTIVEC)) { raid6_algo_add(&raid6_altivec1); raid6_algo_add(&raid6_altivec2); raid6_algo_add(&raid6_altivec4); raid6_algo_add(&raid6_altivec8); } if (cpu_has_feature(CPU_FTR_ALTIVEC_COMP) && cpu_has_feature(CPU_FTR_ARCH_207S)) { raid6_algo_add(&raid6_vpermxor1); raid6_algo_add(&raid6_vpermxor2); raid6_algo_add(&raid6_vpermxor4); raid6_algo_add(&raid6_vpermxor8); } }