arm64/sve: Add compile time checks for SVE hooks in generic functions
authorMark Brown <broonie@kernel.org>
Thu, 15 Apr 2021 12:17:42 +0000 (13:17 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 15 Apr 2021 12:56:30 +0000 (13:56 +0100)
The FPSIMD code was relying on IS_ENABLED() checks in system_suppors_sve()
to cause the compiler to delete references to SVE functions in some places,
add explicit IS_ENABLED() checks back.

Fixes: ef9c5d09797d ("arm64/sve: Remove redundant system_supports_sve() tests")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Link: https://lore.kernel.org/r/20210415121742.36628-1-broonie@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/kernel/fpsimd.c

index 5bbb054..da8cc14 100644 (file)
@@ -285,7 +285,7 @@ static void task_fpsimd_load(void)
        WARN_ON(!system_supports_fpsimd());
        WARN_ON(!have_cpu_fpsimd_context());
 
-       if (test_thread_flag(TIF_SVE))
+       if (IS_ENABLED(CONFIG_ARM64_SVE) && test_thread_flag(TIF_SVE))
                sve_load_state(sve_pffr(&current->thread),
                               &current->thread.uw.fpsimd_state.fpsr,
                               sve_vq_from_vl(current->thread.sve_vl) - 1);
@@ -307,7 +307,8 @@ static void fpsimd_save(void)
        WARN_ON(!have_cpu_fpsimd_context());
 
        if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) {
-               if (test_thread_flag(TIF_SVE)) {
+               if (IS_ENABLED(CONFIG_ARM64_SVE) &&
+                   test_thread_flag(TIF_SVE)) {
                        if (WARN_ON(sve_get_vl() != last->sve_vl)) {
                                /*
                                 * Can't save the user regs, so current would