Message ID | 1367213521-26795-1-git-send-email-inki.dae@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote: > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE s/mutiple/multiple/, still this sentence doesn't sound right. What is the error message you see? > The issue could be induced when some framework which includes two > more sub drivers, is built as one moudle because those sub drivers s/moudle/module/ > could have their own MODULE_DEVICE_TABLE. > > And 'struct of_device_id' isn't needed to be determined by type > argument because the definition of 'of_device_id' should be fixed. > So this patch makes 'of_devce_id' definition to be fixed and > only its instance name to be defined by type. include/linux/isapnp.h uses: #define ISAPNP_CARD_TABLE(name) \ MODULE_GENERIC_TABLE(isapnp_card, name) and you changed the table's type with your patch. Ditto for all users of MODULE_DEVICE_TABLE(i2c, ...); MODULE_DEVICE_TABLE(acpi, ...); MODULE_DEVICE_TABLE(platform, ...); MODULE_DEVICE_TABLE(pci, ...); MODULE_DEVICE_TABLE(sdio, ...); So I'm pretty sure your patch is wrong and I expect it makes most defconfigs fail to compile. Best regards Uwe > > Signed-off-by: Inki Dae <inki.dae@samsung.com> > --- > include/linux/module.h | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/include/linux/module.h b/include/linux/module.h > index 46f1ea0..ac5d79f 100644 > --- a/include/linux/module.h > +++ b/include/linux/module.h > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m); > > #ifdef MODULE > #define MODULE_GENERIC_TABLE(gtype,name) \ > -extern const struct gtype##_id __mod_##gtype##_table \ > +extern const struct of_device_id __mod_##gtype##_table \ > __attribute__ ((unused, alias(__stringify(name)))) > > #else /* !MODULE */ > -- > 1.7.5.4 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel >
Hi, > -----Original Message----- > From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel- > owner@vger.kernel.org] On Behalf Of Uwe Kleine-Konig > Sent: Monday, April 29, 2013 4:35 PM > To: Inki Dae > Cc: gregkh@linuxfoundation.org; linux-kernel@vger.kernel.org; dri- > devel@lists.freedesktop.org; linux-arm-kernel@lists.infradead.org > Subject: Re: [PATCH] module: fix mutiple defined issue > > On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote: > > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE > s/mutiple/multiple/, still this sentence doesn't sound right. What is > the error message you see? > > > The issue could be induced when some framework which includes two > > more sub drivers, is built as one moudle because those sub drivers > s/moudle/module/ > > > could have their own MODULE_DEVICE_TABLE. > > > > And 'struct of_device_id' isn't needed to be determined by type > > argument because the definition of 'of_device_id' should be fixed. > > So this patch makes 'of_devce_id' definition to be fixed and > > only its instance name to be defined by type. > include/linux/isapnp.h uses: > #define ISAPNP_CARD_TABLE(name) \ > MODULE_GENERIC_TABLE(isapnp_card, name) > > and you changed the table's type with your patch. Ditto for all users of > > MODULE_DEVICE_TABLE(i2c, ...); > MODULE_DEVICE_TABLE(acpi, ...); > MODULE_DEVICE_TABLE(platform, ...); > MODULE_DEVICE_TABLE(pci, ...); > MODULE_DEVICE_TABLE(sdio, ...); > > So I'm pretty sure your patch is wrong and I expect it makes most > defconfigs fail to compile. > It might be my big mistake. Maybe xxx_device_id object was created device tree internally. Right? Will check it out again. So please ignore it. Thanks, Inki Dae > Best regards > Uwe > > > > > Signed-off-by: Inki Dae <inki.dae@samsung.com> > > --- > > include/linux/module.h | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/include/linux/module.h b/include/linux/module.h > > index 46f1ea0..ac5d79f 100644 > > --- a/include/linux/module.h > > +++ b/include/linux/module.h > > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m); > > > > #ifdef MODULE > > #define MODULE_GENERIC_TABLE(gtype,name) \ > > -extern const struct gtype##_id __mod_##gtype##_table \ > > +extern const struct of_device_id __mod_##gtype##_table \ > > __attribute__ ((unused, alias(__stringify(name)))) > > > > #else /* !MODULE */ > > -- > > 1.7.5.4 > > > > > > _______________________________________________ > > linux-arm-kernel mailing list > > linux-arm-kernel@lists.infradead.org > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > > > > -- > Pengutronix e.K. | Uwe Kleine-König | > Industrial Linux Solutions | http://www.pengutronix.de/ | > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote: > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE > > The issue could be induced when some framework which includes two > more sub drivers, is built as one moudle because those sub drivers > could have their own MODULE_DEVICE_TABLE. > > And 'struct of_device_id' isn't needed to be determined by type > argument because the definition of 'of_device_id' should be fixed. > So this patch makes 'of_devce_id' definition to be fixed and > only its instance name to be defined by type. > > Signed-off-by: Inki Dae <inki.dae@samsung.com> > --- > include/linux/module.h | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/include/linux/module.h b/include/linux/module.h > index 46f1ea0..ac5d79f 100644 > --- a/include/linux/module.h > +++ b/include/linux/module.h > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m); > > #ifdef MODULE > #define MODULE_GENERIC_TABLE(gtype,name) \ > -extern const struct gtype##_id __mod_##gtype##_table \ > +extern const struct of_device_id __mod_##gtype##_table \ > __attribute__ ((unused, alias(__stringify(name)))) > > #else /* !MODULE */ This patch (a) looks wrong (why would a generic device table be limited to of_device_id when it could be ISAPNP or something else?) and (b) how does changing the type fix the "multiple defined issue" ? (c) include the errors that you're fixing in the commit log.
> -----Original Message----- > From: linux-kernel-owner@vger.kernel.org [mailto:linux-kernel- > owner@vger.kernel.org] On Behalf Of Russell King - ARM Linux > Sent: Monday, April 29, 2013 6:52 PM > To: Inki Dae > Cc: gregkh@linuxfoundation.org; linux-kernel@vger.kernel.org; dri- > devel@lists.freedesktop.org; linux-arm-kernel@lists.infradead.org > Subject: Re: [PATCH] module: fix mutiple defined issue > > On Mon, Apr 29, 2013 at 02:32:01PM +0900, Inki Dae wrote: > > This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE > > > > The issue could be induced when some framework which includes two > > more sub drivers, is built as one moudle because those sub drivers > > could have their own MODULE_DEVICE_TABLE. > > > > And 'struct of_device_id' isn't needed to be determined by type > > argument because the definition of 'of_device_id' should be fixed. > > So this patch makes 'of_devce_id' definition to be fixed and > > only its instance name to be defined by type. > > > > Signed-off-by: Inki Dae <inki.dae@samsung.com> > > --- > > include/linux/module.h | 2 +- > > 1 files changed, 1 insertions(+), 1 deletions(-) > > > > diff --git a/include/linux/module.h b/include/linux/module.h > > index 46f1ea0..ac5d79f 100644 > > --- a/include/linux/module.h > > +++ b/include/linux/module.h > > @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m); > > > > #ifdef MODULE > > #define MODULE_GENERIC_TABLE(gtype,name) \ > > -extern const struct gtype##_id __mod_##gtype##_table \ > > +extern const struct of_device_id __mod_##gtype##_table \ > > __attribute__ ((unused, alias(__stringify(name)))) > > > > #else /* !MODULE */ > > This patch (a) looks wrong (why would a generic device table be limited > to of_device_id when it could be ISAPNP or something else?) and (b) how > does changing the type fix the "multiple defined issue" ? (c) include > the errors that you're fixing in the commit log. There was my misunderstanding. So please ignore my patch. Some headers in include/linux/ have some kind of device_id structure such as of_device_id, platform_device_id, i2c_device_id, and so on. And these structures should be used properly. This was my missing point. Thanks, Inki Dae > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
diff --git a/include/linux/module.h b/include/linux/module.h index 46f1ea0..ac5d79f 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -84,7 +84,7 @@ void trim_init_extable(struct module *m); #ifdef MODULE #define MODULE_GENERIC_TABLE(gtype,name) \ -extern const struct gtype##_id __mod_##gtype##_table \ +extern const struct of_device_id __mod_##gtype##_table \ __attribute__ ((unused, alias(__stringify(name)))) #else /* !MODULE */
This patch fixes mutiple defined issue to MODULE_DEVICE_TABLE The issue could be induced when some framework which includes two more sub drivers, is built as one moudle because those sub drivers could have their own MODULE_DEVICE_TABLE. And 'struct of_device_id' isn't needed to be determined by type argument because the definition of 'of_device_id' should be fixed. So this patch makes 'of_devce_id' definition to be fixed and only its instance name to be defined by type. Signed-off-by: Inki Dae <inki.dae@samsung.com> --- include/linux/module.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)