2009-04-09 00:07:12

by Steven Rostedt

[permalink] [raw]
Subject: [PATCH] x86,edac: fix for compiler error in traps.c


Impact: compile fix

I got this compile failure on both tip/tracing/core as well as on
v2.6.30-rc1.

LD .tmp_vmlinux1
arch/x86/kernel/built-in.o: In function `do_nmi':
(.text+0x3c18): undefined reference to `edac_handler_set'
arch/x86/kernel/built-in.o: In function `do_nmi':
(.text+0x3c48): undefined reference to `edac_atomic_assert_error'
make: *** [.tmp_vmlinux1] Error 1
[root@bxrhel51 linux-trace.git]# grep edac_handler_set
[root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
./arch/x86/kernel/traps.c: if (edac_handler_set()) {
./include/linux/edac.h:extern int edac_handler_set(void);
./drivers/edac/edac_stub.c:int edac_handler_set(void)
./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);

This patch seems to fix it.

Signed-off-by: Steven Rostedt <[email protected]>

diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile
index a5fdcf0..cc2bcb4 100644
--- a/drivers/edac/Makefile
+++ b/drivers/edac/Makefile
@@ -7,7 +7,7 @@
#


-obj-$(CONFIG_EDAC) := edac_stub.o
+obj-$(CONFIG_EDAC) += edac_stub.o
obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o

edac_core-objs := edac_mc.o edac_device.o edac_mc_sysfs.o edac_pci_sysfs.o


2009-04-09 00:51:32

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c

On Wed, 8 Apr 2009 20:06:53 -0400 (EDT) Steven Rostedt <[email protected]> wrote:

>
> Impact: compile fix
>
> I got this compile failure on both tip/tracing/core as well as on
> v2.6.30-rc1.
>
> LD .tmp_vmlinux1
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c18): undefined reference to `edac_handler_set'
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c48): undefined reference to `edac_atomic_assert_error'
> make: *** [.tmp_vmlinux1] Error 1
> [root@bxrhel51 linux-trace.git]# grep edac_handler_set
> [root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
> find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
> ./arch/x86/kernel/traps.c: if (edac_handler_set()) {
> ./include/linux/edac.h:extern int edac_handler_set(void);
> ./drivers/edac/edac_stub.c:int edac_handler_set(void)
> ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
>
> This patch seems to fix it.
>
> Signed-off-by: Steven Rostedt <[email protected]>
>
> diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile
> index a5fdcf0..cc2bcb4 100644
> --- a/drivers/edac/Makefile
> +++ b/drivers/edac/Makefile
> @@ -7,7 +7,7 @@
> #
>
>
> -obj-$(CONFIG_EDAC) := edac_stub.o
> +obj-$(CONFIG_EDAC) += edac_stub.o
> obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o
>
> edac_core-objs := edac_mc.o edac_device.o edac_mc_sysfs.o edac_pci_sysfs.o

OK, thanks, I'll send that Linuswards asap.

I guess it could/should be

obj-y += edac_stub.o

because CONFIG_EDAC is known to be true in drivers/edac/. But that's
just a consistency/style thing for Doug to scratch his head over ;)

2009-04-09 00:55:19

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c

On Wed, 8 Apr 2009 20:06:53 -0400 (EDT) Steven Rostedt <[email protected]> wrote:

>
> Impact: compile fix
>
> I got this compile failure on both tip/tracing/core as well as on
> v2.6.30-rc1.
>
> LD .tmp_vmlinux1
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c18): undefined reference to `edac_handler_set'
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c48): undefined reference to `edac_atomic_assert_error'
> make: *** [.tmp_vmlinux1] Error 1
> [root@bxrhel51 linux-trace.git]# grep edac_handler_set
> [root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
> find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
> ./arch/x86/kernel/traps.c: if (edac_handler_set()) {
> ./include/linux/edac.h:extern int edac_handler_set(void);
> ./drivers/edac/edac_stub.c:int edac_handler_set(void)
> ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
>
> This patch seems to fix it.
>
> Signed-off-by: Steven Rostedt <[email protected]>
>
> diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile
> index a5fdcf0..cc2bcb4 100644
> --- a/drivers/edac/Makefile
> +++ b/drivers/edac/Makefile
> @@ -7,7 +7,7 @@
> #
>
>
> -obj-$(CONFIG_EDAC) := edac_stub.o
> +obj-$(CONFIG_EDAC) += edac_stub.o
> obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o
>
> edac_core-objs := edac_mc.o edac_device.o edac_mc_sysfs.o edac_pci_sysfs.o

Confused. Why didn't 2.6.29 break?

2009-04-09 03:59:00

by Ingo Molnar

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c


* Steven Rostedt <[email protected]> wrote:

> Impact: compile fix
>
> I got this compile failure on both tip/tracing/core as well as on
> v2.6.30-rc1.
>
> LD .tmp_vmlinux1
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c18): undefined reference to `edac_handler_set'
> arch/x86/kernel/built-in.o: In function `do_nmi':
> (.text+0x3c48): undefined reference to `edac_atomic_assert_error'
> make: *** [.tmp_vmlinux1] Error 1
> [root@bxrhel51 linux-trace.git]# grep edac_handler_set
> [root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
> find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
> ./arch/x86/kernel/traps.c: if (edac_handler_set()) {
> ./include/linux/edac.h:extern int edac_handler_set(void);
> ./drivers/edac/edac_stub.c:int edac_handler_set(void)
> ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
>
> This patch seems to fix it.

> -obj-$(CONFIG_EDAC) := edac_stub.o
> +obj-$(CONFIG_EDAC) += edac_stub.o
> obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o

It's weird that this breaks for you. What other bit of the kernel
introduces CONFIG_EDAC rules?

And it's clean to start driver rules with the := assignment and then
append to them via +=. The initial += should not be needed.

Are you sure you have a pristine build environment?

Ingo

2009-04-09 14:51:19

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c


On Thu, 9 Apr 2009, Ingo Molnar wrote:

>
> * Steven Rostedt <[email protected]> wrote:
>
> > Impact: compile fix
> >
> > I got this compile failure on both tip/tracing/core as well as on
> > v2.6.30-rc1.
> >
> > LD .tmp_vmlinux1
> > arch/x86/kernel/built-in.o: In function `do_nmi':
> > (.text+0x3c18): undefined reference to `edac_handler_set'
> > arch/x86/kernel/built-in.o: In function `do_nmi':
> > (.text+0x3c48): undefined reference to `edac_atomic_assert_error'
> > make: *** [.tmp_vmlinux1] Error 1
> > [root@bxrhel51 linux-trace.git]# grep edac_handler_set
> > [root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
> > find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
> > ./arch/x86/kernel/traps.c: if (edac_handler_set()) {
> > ./include/linux/edac.h:extern int edac_handler_set(void);
> > ./drivers/edac/edac_stub.c:int edac_handler_set(void)
> > ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
> >
> > This patch seems to fix it.
>
> > -obj-$(CONFIG_EDAC) := edac_stub.o
> > +obj-$(CONFIG_EDAC) += edac_stub.o
> > obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o
>
> It's weird that this breaks for you. What other bit of the kernel
> introduces CONFIG_EDAC rules?
>
> And it's clean to start driver rules with the := assignment and then
> append to them via +=. The initial += should not be needed.
>
> Are you sure you have a pristine build environment?

Good question.

I'll do a make clean and try again and let you know.

-- Steve

2009-04-09 15:07:49

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c


Andrew, I guess this change is not needed. Ingo was correct, there must
have been something wrong with my build environment. Not sure what
happened, but I had this failure right after updating my git repo. I did
not do a make clean, so my build environment was not pristine. After doing
a make clean, I no longer have this error.

Sorry for the noise.

-- Steve



On Wed, 8 Apr 2009, Andrew Morton wrote:

> On Wed, 8 Apr 2009 20:06:53 -0400 (EDT) Steven Rostedt <[email protected]> wrote:
>
> >
> > Impact: compile fix
> >
> > I got this compile failure on both tip/tracing/core as well as on
> > v2.6.30-rc1.
> >
> > LD .tmp_vmlinux1
> > arch/x86/kernel/built-in.o: In function `do_nmi':
> > (.text+0x3c18): undefined reference to `edac_handler_set'
> > arch/x86/kernel/built-in.o: In function `do_nmi':
> > (.text+0x3c48): undefined reference to `edac_atomic_assert_error'
> > make: *** [.tmp_vmlinux1] Error 1
> > [root@bxrhel51 linux-trace.git]# grep edac_handler_set
> > [root@bxrhel51 linux-trace.git]# Grep edac_handler_set '*.[ch]'
> > find . -name "*.[ch]" ! -type d | xargs grep "edac_handler_set"
> > ./arch/x86/kernel/traps.c: if (edac_handler_set()) {
> > ./include/linux/edac.h:extern int edac_handler_set(void);
> > ./drivers/edac/edac_stub.c:int edac_handler_set(void)
> > ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
> >
> > This patch seems to fix it.
> >
> > Signed-off-by: Steven Rostedt <[email protected]>
> >
> > diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile
> > index a5fdcf0..cc2bcb4 100644
> > --- a/drivers/edac/Makefile
> > +++ b/drivers/edac/Makefile
> > @@ -7,7 +7,7 @@
> > #
> >
> >
> > -obj-$(CONFIG_EDAC) := edac_stub.o
> > +obj-$(CONFIG_EDAC) += edac_stub.o
> > obj-$(CONFIG_EDAC_MM_EDAC) += edac_core.o
> >
> > edac_core-objs := edac_mc.o edac_device.o edac_mc_sysfs.o edac_pci_sysfs.o
>
> OK, thanks, I'll send that Linuswards asap.
>
> I guess it could/should be
>
> obj-y += edac_stub.o
>
> because CONFIG_EDAC is known to be true in drivers/edac/. But that's
> just a consistency/style thing for Doug to scratch his head over ;)
>

2009-04-09 18:42:01

by Doug Thompson

[permalink] [raw]
Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c


--- On Wed, 4/8/09, Andrew Morton <[email protected]> wrote:

> From: Andrew Morton <[email protected]>
> Subject: Re: [PATCH] x86,edac: fix for compiler error in traps.c
> To: "Steven Rostedt" <[email protected]>
> Cc: "Ingo Molnar" <[email protected]>, "LKML" <[email protected]>, "Doug Thompson" <[email protected]>
> Date: Wednesday, April 8, 2009, 6:48 PM
> On Wed, 8 Apr 2009 20:06:53 -0400
> (EDT) Steven Rostedt <[email protected]>
> wrote:
>
> >
> > Impact: compile fix
> >
> >? I got this compile failure on both
> tip/tracing/core as well as on
> >? v2.6.30-rc1.
> >?
> >? ? LD? ? ? .tmp_vmlinux1
> >? arch/x86/kernel/built-in.o: In function
> `do_nmi':
> >? (.text+0x3c18): undefined reference to
> `edac_handler_set'
> >? arch/x86/kernel/built-in.o: In function
> `do_nmi':
> >? (.text+0x3c48): undefined reference to
> `edac_atomic_assert_error'
> >? make: *** [.tmp_vmlinux1] Error 1
> >? [root@bxrhel51 linux-trace.git]# grep
> edac_handler_set
> >? [root@bxrhel51 linux-trace.git]# Grep
> edac_handler_set '*.[ch]'
> >? find .? -name "*.[ch]" ! -type d? |
> xargs grep? "edac_handler_set"
> >? ./arch/x86/kernel/traps.c:??? if
> (edac_handler_set()) {
> >? ./include/linux/edac.h:extern int
> edac_handler_set(void);
> >? ./drivers/edac/edac_stub.c:int
> edac_handler_set(void)
> >?
> ./drivers/edac/edac_stub.c:EXPORT_SYMBOL_GPL(edac_handler_set);
> >?
> > This patch seems to fix it.
> >
> > Signed-off-by: Steven Rostedt <[email protected]>
> >
> > diff --git a/drivers/edac/Makefile
> b/drivers/edac/Makefile
> > index a5fdcf0..cc2bcb4 100644
> > --- a/drivers/edac/Makefile
> > +++ b/drivers/edac/Makefile
> > @@ -7,7 +7,7 @@
> >? #
> >?
> >?
> > -obj-$(CONFIG_EDAC)???
> ??? ??? := edac_stub.o
> > +obj-$(CONFIG_EDAC)???
> ??? ??? += edac_stub.o
> >? obj-$(CONFIG_EDAC_MM_EDAC)???
> ??? += edac_core.o
> >?
> >? edac_core-objs??? := edac_mc.o
> edac_device.o edac_mc_sysfs.o edac_pci_sysfs.o
>
> OK, thanks, I'll send that Linuswards asap.
>
> I guess it could/should be
>
> ??? obj-y += edac_stub.o
>
> because CONFIG_EDAC is known to be true in
> drivers/edac/.? But that's
> just a consistency/style thing for Doug to scratch his head
> over ;)

I had determined (long ago) that := was a first instance initialization. I could be (probably was) wrong on that. I saw that in other files as well as reading the docs (me read em?).

edac_stub.o is targeted to be IN the kernel via the CONFIG_EDAC object file, since that is a boolean switch. It is a different builtin lib from the modules of edac. It is a relay set of functions and interfaces.

thanks for checking up on it

doug t