[PATCH] mn10300: fix build error of missing fpu_save()

From: Randy Dunlap
Date: Thu Jan 19 2017 - 19:59:23 EST


I have 21 occurrences of kbuild test robot reporting this build failure
over more than one year and zero (0) attempts to fix it. I have 2 alternate
(untested) fixes for it. (If either of them causes a build error, it should
be simple to fix and I will do so.)

a. #include <asm/fpu.h> in <asm/switch_to.h> so that empty fpu_save() is
visible
b. make <asm/switch_to.h> know about CONFIG_FPU not enabled

David, which one do you prefer?

Fengguang, it's allnoconfig => CONFIG_FPU=n that causes this build error.

----- a.-----
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

When CONFIG_FPU is not enabled on arch/mn10300, <asm/switch_to.h>
causes a build error with a call to fpu_save():

kernel/built-in.o: In function `.L410':
core.c:(.sched.text+0x28a): undefined reference to `fpu_save'

Fix this by including <asm/fpu.h> in <asm/switch_to.h> so that
an empty static inline fpu_save() is defined.

Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx>
Cc: David Howells <dhowells@xxxxxxxxxx>
---
arch/mn10300/include/asm/switch_to.h | 1 +
1 file changed, 1 insertion(+)

--- lnx-410-rc4.orig/arch/mn10300/include/asm/switch_to.h
+++ lnx-410-rc4/arch/mn10300/include/asm/switch_to.h
@@ -12,6 +12,7 @@
#define _ASM_SWITCH_TO_H

#include <asm/barrier.h>
+#include <asm/fpu.h>

struct task_struct;
struct thread_struct;

-----or b.-----
From: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

When CONFIG_FPU is not enabled on arch/mn10300, <asm/switch_to.h>
causes a build error with a call to fpu_save():

kernel/built-in.o: In function `.L410':
core.c:(.sched.text+0x28a): undefined reference to `fpu_save'

Fix this by defining switch_fpu() in <asm/switch_to.h> only when
CONFIG_FPU is enabled.

Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
Reported-by: kbuild test robot <fengguang.wu@xxxxxxxxx>
Cc: David Howells <dhowells@xxxxxxxxxx>
---
arch/mn10300/include/asm/switch_to.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- lnx-410-rc4.orig/arch/mn10300/include/asm/switch_to.h
+++ lnx-410-rc4/arch/mn10300/include/asm/switch_to.h
@@ -16,7 +16,7 @@
struct task_struct;
struct thread_struct;

-#if !defined(CONFIG_LAZY_SAVE_FPU)
+#if defined(CONFIG_FPU) && !defined(CONFIG_LAZY_SAVE_FPU)
struct fpu_state_struct;
extern asmlinkage void fpu_save(struct fpu_state_struct *);
#define switch_fpu(prev, next) \