Re: undefined reference to `sparse_keymap_free'

From: Joey Lee
Date: Tue Apr 12 2011 - 02:34:00 EST


æ äï2011-04-11 æ 22:58 -0700ïDmitry Torokhov æåï
> On Mon, Apr 11, 2011 at 10:48:19PM -0700, Andrew Morton wrote:
> > (cc's added)
> >
> > On Mon, 11 Apr 2011 23:18:04 -0500 Steve French <smfrench@xxxxxxxxx> wrote:
> >
> > > 2.6.38-rc3 build error:
> > >
> > > drivers/built-in.o: In function `msi_laptop_input_destroy':
> > > msi-laptop.c:(.text+0x1a3be1): undefined reference to `sparse_keymap_free'
> > > drivers/built-in.o: In function `msi_send_touchpad_key':
> > > msi-laptop.c:(.text+0x1a3c45): undefined reference to
> > > `sparse_keymap_report_event'
> > > drivers/built-in.o: In function `msi_init':
> > > msi-laptop.c:(.init.text+0xe055): undefined reference to `sparse_keymap_setup'
> > > msi-laptop.c:(.init.text+0xe07d): undefined reference to `sparse_keymap_free'
> > >
> >
> > Either a missing CONFIG_INPUT_SPARSEKMAP dependency, or missing stubs in
> > include/linux/input/sparse-keymap.h?
> >
>
> No, stubs for sparse keymap do not make sense (either one wants to use
> this library-like module or she does not), so it must be the missing
> "select" (sparse keymap should be selectable as long as selecting module
> depends on CONFIG_INPUT).
>
> Thanks.
>

Randy's patch in platform driver tree's linux-next branch fixed this
issue:

commit d0984225a888a84e44f23671c670a7bb035d1820
Author: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
Date: Wed Mar 30 15:20:22 2011 -0700

msi-laptop: fix config-dependent build error

The msi-laptop driver uses input_*() and sparse_keymap_*() interfaces.
It should depend on the INPUT subsystem being present and select
INPUT_SPARSEKMAP so that those interfaces are present.

ERROR: "input_free_device" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "input_register_device" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "sparse_keymap_setup" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "input_allocate_device" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "sparse_keymap_report_event" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "input_unregister_device" [drivers/platform/x86/msi-laptop.ko] undefined!
ERROR: "sparse_keymap_free" [drivers/platform/x86/msi-laptop.ko] undefined!

Signed-off-by: Randy Dunlap <randy.dunlap@xxxxxxxxxx>
Cc: Matthew Garrett <mjg@xxxxxxxxxx>
Cc: "Lee, Chun-Yi" <jlee@xxxxxxxxxx>
Signed-off-by: Matthew Garrett <mjg@xxxxxxxxxx>

diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index 2ee442c..0485e39 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -187,7 +187,8 @@ config MSI_LAPTOP
depends on ACPI
depends on BACKLIGHT_CLASS_DEVICE
depends on RFKILL
- depends on SERIO_I8042
+ depends on INPUT && SERIO_I8042
+ select INPUT_SPARSEKMAP
---help---
This is a driver for laptops built by MSI (MICRO-STAR
INTERNATIONAL):


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/