Re: [PATCH 6/11] serio dynamic allocation

From: Andrew Morton
Date: Sun Jun 20 2004 - 00:09:11 EST


Dmitry Torokhov <dtor_core@xxxxxxxxxxxxx> wrote:
>
> Input: switch to dynamic (heap) serio port allocation in preparation
> to sysfs integration. By having all data structures dynamically
> allocated serio driver modules can be unloaded without waiting
> for the last reference to the port to be dropped.

This patch causes problems on sparc64:

drivers/input/serio/i8042-sparcio.h: In function `i8042_platform_init':
drivers/input/serio/i8042-sparcio.h:103: error: `i8042_reset' undeclared (first use in this function)
drivers/input/serio/i8042-sparcio.h:103: error: (Each undeclared identifier is reported only once
drivers/input/serio/i8042-sparcio.h:103: error: for each function it appears in.)
drivers/input/serio/i8042.c: At top level:
drivers/input/serio/i8042.c:46: error: `i8042_reset' used prior to declaration

Which will be fixed by this patch:

--- 25-sparc64/drivers/input/serio/i8042.c~input-serio-dynamic-allocation-fix 2004-06-19 21:56:11.972974984 -0700
+++ 25-sparc64-akpm/drivers/input/serio/i8042.c 2004-06-19 21:57:15.454324352 -0700
@@ -25,7 +25,6 @@
#include <asm/io.h>

#undef DEBUG
-#include "i8042.h"

MODULE_AUTHOR("Vojtech Pavlik <vojtech@xxxxxxx>");
MODULE_DESCRIPTION("i8042 keyboard and mouse controller driver");
@@ -55,6 +54,8 @@ static unsigned int i8042_dumbkbd;
module_param_named(dumbkbd, i8042_dumbkbd, bool, 0);
MODULE_PARM_DESC(dumbkbd, "Pretend that controller can only read data from keyboard");

+#include "i8042.h"
+
extern unsigned int i8042_dmi_noloop;
static unsigned int i8042_noloop;
extern unsigned int i8042_dmi_noloop;
_


However we still have this:

drivers/input/serio/i8042.c:81: error: initializer element is not constant
drivers/input/serio/i8042.c:81: error: (near initialization for `i8042_kbd_values.irq')
drivers/input/serio/i8042.c:89: error: initializer element is not constant
drivers/input/serio/i8042.c:89: error: (near initialization for `i8042_aux_values.irq')

due to:

static struct i8042_values i8042_kbd_values = {
.irq = I8042_KBD_IRQ,


I8042_KBD_IRQ is not a constant on sparc64.

It seems that simply removing that static initialiser will fix
it up, but I assume it was added for some reason, so I'll leave
you to ponder that.

-
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/