1*adfcf6e8SChristoph Hellwig /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*adfcf6e8SChristoph Hellwig 3*adfcf6e8SChristoph Hellwig #include <asm/cpu-features.h> 4*adfcf6e8SChristoph Hellwig 5*adfcf6e8SChristoph Hellwig extern const struct raid6_calls raid6_lsx; 6*adfcf6e8SChristoph Hellwig extern const struct raid6_calls raid6_lasx; 7*adfcf6e8SChristoph Hellwig 8*adfcf6e8SChristoph Hellwig extern const struct raid6_recov_calls raid6_recov_lsx; 9*adfcf6e8SChristoph Hellwig extern const struct raid6_recov_calls raid6_recov_lasx; 10*adfcf6e8SChristoph Hellwig 11*adfcf6e8SChristoph Hellwig static __always_inline void __init arch_raid6_init(void) 12*adfcf6e8SChristoph Hellwig { 13*adfcf6e8SChristoph Hellwig raid6_algo_add_default(); 14*adfcf6e8SChristoph Hellwig if (IS_ENABLED(CONFIG_CPU_HAS_LSX) && cpu_has_lsx) 15*adfcf6e8SChristoph Hellwig raid6_algo_add(&raid6_lsx); 16*adfcf6e8SChristoph Hellwig if (IS_ENABLED(CONFIG_CPU_HAS_LASX) && cpu_has_lasx) 17*adfcf6e8SChristoph Hellwig raid6_algo_add(&raid6_lasx); 18*adfcf6e8SChristoph Hellwig 19*adfcf6e8SChristoph Hellwig if (IS_ENABLED(CONFIG_CPU_HAS_LASX) && cpu_has_lasx) 20*adfcf6e8SChristoph Hellwig raid6_recov_algo_add(&raid6_recov_lasx); 21*adfcf6e8SChristoph Hellwig else if (IS_ENABLED(CONFIG_CPU_HAS_LSX) && cpu_has_lsx) 22*adfcf6e8SChristoph Hellwig raid6_recov_algo_add(&raid6_recov_lsx); 23*adfcf6e8SChristoph Hellwig } 24