* Re: Section conflict compile failures in net [not found] ` <20110527080728.GA2108@rere.qmqm.pl> @ 2011-05-27 23:04 ` James Bottomley 2011-05-28 9:05 ` Michał Mirosław 0 siblings, 1 reply; 8+ messages in thread From: James Bottomley @ 2011-05-27 23:04 UTC (permalink / raw) To: Michał Mirosław; +Cc: netdev, David Miller On Fri, 2011-05-27 at 10:07 +0200, Michał Mirosław wrote: > On Thu, May 26, 2011 at 04:39:53PM -0500, James Bottomley wrote: > > I'm now getting a ton of errors like this in git head: > > > > CC [M] drivers/net/3c59x.o > > CC [M] drivers/net/hp100.o > > CC [M] drivers/net/ne3210.o > > CC [M] drivers/net/3c509.o > > CC [M] drivers/net/depca.o > > drivers/net/ne3210.c:83: error: irq_map causes a section type conflict > > drivers/net/ne3210.c:85: error: shmem_map causes a section type conflict > > drivers/net/ne3210.c:89: error: ifmap_val causes a section type conflict > > drivers/net/ne3210.c:319: error: ne3210_ids causes a section type conflict > > make[2]: *** [drivers/net/ne3210.o] Error 1 > > make[2]: *** Waiting for unfinished jobs.... > > drivers/net/hp100.c:198: error: hp100_eisa_tbl causes a section type conflict > > drivers/net/hp100.c:211: error: hp100_pci_tbl causes a section type conflict > > make[2]: *** [drivers/net/hp100.o] Error 1 > > drivers/net/depca.c:544: error: de1xx_irq causes a section type conflict > > drivers/net/depca.c:545: error: de2xx_irq causes a section type conflict > > drivers/net/depca.c:546: error: de422_irq causes a section type conflict > [...] > > Those three are only used in depca_hw_init() marked __devinit. What compiler > [flags] do you use to build this? It's a standard debian one. jejb@ion> hppa64-linux-gnu-gcc -v Using built-in specs. Target: hppa64-linux-gnu Configured with: ../src/configure --enable-languages=c --prefix=/usr --libexecdir=/usr/lib --disable-shared --disable-nls --disable-threads --disable-libffi --disable-libgomp --disable-libmudflap --disable-libssp --with-as=/usr/bin/hppa64-linux-gnu-as --with-ld=/usr/bin/hppa64-linux-gnu-ld --includedir=/usr/hppa64-linux-gnu/include --host=hppa-linux-gnu --build=hppa-linux-gnu --target=hppa64-linux-gnu Thread model: single gcc version 4.2.4 (Debian 4.2.4-6) the problem is definitely the depca_irq[i] in the loop ... replace that with a constant and the error goes away. James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-05-27 23:04 ` Section conflict compile failures in net James Bottomley @ 2011-05-28 9:05 ` Michał Mirosław 0 siblings, 0 replies; 8+ messages in thread From: Michał Mirosław @ 2011-05-28 9:05 UTC (permalink / raw) To: James Bottomley; +Cc: netdev, David Miller On Fri, May 27, 2011 at 06:04:37PM -0500, James Bottomley wrote: > On Fri, 2011-05-27 at 10:07 +0200, Michał Mirosław wrote: > > On Thu, May 26, 2011 at 04:39:53PM -0500, James Bottomley wrote: > > > I'm now getting a ton of errors like this in git head: > > > > > > CC [M] drivers/net/3c59x.o > > > CC [M] drivers/net/hp100.o > > > CC [M] drivers/net/ne3210.o > > > CC [M] drivers/net/3c509.o > > > CC [M] drivers/net/depca.o > > > drivers/net/ne3210.c:83: error: irq_map causes a section type conflict > > > drivers/net/ne3210.c:85: error: shmem_map causes a section type conflict > > > drivers/net/ne3210.c:89: error: ifmap_val causes a section type conflict > > > drivers/net/ne3210.c:319: error: ne3210_ids causes a section type conflict > > > make[2]: *** [drivers/net/ne3210.o] Error 1 > > > make[2]: *** Waiting for unfinished jobs.... > > > drivers/net/hp100.c:198: error: hp100_eisa_tbl causes a section type conflict > > > drivers/net/hp100.c:211: error: hp100_pci_tbl causes a section type conflict > > > make[2]: *** [drivers/net/hp100.o] Error 1 > > > drivers/net/depca.c:544: error: de1xx_irq causes a section type conflict > > > drivers/net/depca.c:545: error: de2xx_irq causes a section type conflict > > > drivers/net/depca.c:546: error: de422_irq causes a section type conflict > > [...] > > > > Those three are only used in depca_hw_init() marked __devinit. What compiler > > [flags] do you use to build this? > > It's a standard debian one. > > jejb@ion> hppa64-linux-gnu-gcc -v > Using built-in specs. > Target: hppa64-linux-gnu > Configured with: ../src/configure --enable-languages=c --prefix=/usr > --libexecdir=/usr/lib --disable-shared --disable-nls --disable-threads > --disable-libffi --disable-libgomp --disable-libmudflap --disable-libssp > --with-as=/usr/bin/hppa64-linux-gnu-as > --with-ld=/usr/bin/hppa64-linux-gnu-ld > --includedir=/usr/hppa64-linux-gnu/include --host=hppa-linux-gnu > --build=hppa-linux-gnu --target=hppa64-linux-gnu > Thread model: single > gcc version 4.2.4 (Debian 4.2.4-6) > > the problem is definitely the depca_irq[i] in the loop ... replace that > with a constant and the error goes away. Looks like arch-specific problem. Build test passes for x86 allyesconfig. Best Regards, Michał Mirosław ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net [not found] <1306445993.4048.58.camel@mulgrave.site> [not found] ` <20110527080728.GA2108@rere.qmqm.pl> @ 2011-05-31 22:45 ` David Miller 2011-06-01 1:27 ` Michał Mirosław 2011-06-01 1:42 ` James Bottomley 1 sibling, 2 replies; 8+ messages in thread From: David Miller @ 2011-05-31 22:45 UTC (permalink / raw) To: James.Bottomley; +Cc: mirq-linux, netdev From: James Bottomley <James.Bottomley@HansenPartnership.com> Date: Thu, 26 May 2011 16:39:53 -0500 BTW, linux-netdev doesn't exist, it's just plain netdev. > Simply reverting > > commit e5cb966c0838e4da43a3b0751bdcac7fe719f7b4 > Author: Micha<C5><82> Miros<C5><82>aw <mirq-linux@rere.qmqm.pl> > Date: Mon Apr 18 13:31:20 2011 +0000 > > net: fix section mismatches > > Fixes the problem. > > If I look at the first problem in hp100.c, the addition of > __devinitconst to the device tables is fine, but there's no > corresponding sectional tag on their use, so when compiled as a module, > things like hp100_eisa_driver is now in the main data section but refers > to something in the init data section ... I assume all the others are > the same type of problem. Yeah I think the device ID table __devinitconst bits have to be reverted. I'll apply something like the following: net: Revert adding __devinitconst to driver ID tables. If the table is hooked up to foo_driver->id_table we can't mark it __devinitconst otherwise we end up with section mismatches. Reported-by: James Bottomley <James.Bottomley@HansenPartnership.com> Signed-off-by: David S. Miller <davem@davemloft.net> diff --git a/drivers/net/3c509.c b/drivers/net/3c509.c index 5f25889..f6eaf6f 100644 --- a/drivers/net/3c509.c +++ b/drivers/net/3c509.c @@ -395,7 +395,7 @@ static struct isa_driver el3_isa_driver = { static int isa_registered; #ifdef CONFIG_PNP -static const struct pnp_device_id el3_pnp_ids[] __devinitconst = { +static const struct pnp_device_id el3_pnp_ids[] = { { .id = "TCM5090" }, /* 3Com Etherlink III (TP) */ { .id = "TCM5091" }, /* 3Com Etherlink III */ { .id = "TCM5094" }, /* 3Com Etherlink III (combo) */ @@ -478,7 +478,7 @@ static int pnp_registered; #endif /* CONFIG_PNP */ #ifdef CONFIG_EISA -static const struct eisa_device_id el3_eisa_ids[] __devinitconst = { +static const struct eisa_device_id el3_eisa_ids[] = { { "TCM5090" }, { "TCM5091" }, { "TCM5092" }, @@ -508,7 +508,7 @@ static int eisa_registered; #ifdef CONFIG_MCA static int el3_mca_probe(struct device *dev); -static const short el3_mca_adapter_ids[] __devinitconst = { +static const short el3_mca_adapter_ids[] = { 0x627c, 0x627d, 0x62db, diff --git a/drivers/net/3c59x.c b/drivers/net/3c59x.c index 99f43d2..9ff7f37 100644 --- a/drivers/net/3c59x.c +++ b/drivers/net/3c59x.c @@ -901,7 +901,7 @@ static const struct dev_pm_ops vortex_pm_ops = { #endif /* !CONFIG_PM */ #ifdef CONFIG_EISA -static const struct eisa_device_id vortex_eisa_ids[] __devinitconst = { +static const struct eisa_device_id vortex_eisa_ids[] = { { "TCM5920", CH_3C592 }, { "TCM5970", CH_3C597 }, { "" } diff --git a/drivers/net/depca.c b/drivers/net/depca.c index 1765405..645182b 100644 --- a/drivers/net/depca.c +++ b/drivers/net/depca.c @@ -342,7 +342,7 @@ static const char depca_string[] = "depca"; static int depca_device_remove (struct device *device); #ifdef CONFIG_EISA -static const struct eisa_device_id depca_eisa_ids[] __devinitconst = { +static const struct eisa_device_id depca_eisa_ids[] = { { "DEC4220", de422 }, { "" } }; diff --git a/drivers/net/hp100.c b/drivers/net/hp100.c index c52a1df..ea8d345 100644 --- a/drivers/net/hp100.c +++ b/drivers/net/hp100.c @@ -195,7 +195,7 @@ static const char *const hp100_isa_tbl[] __devinitconst = { #endif #ifdef CONFIG_EISA -static const struct eisa_device_id hp100_eisa_tbl[] __devinitconst = { +static const struct eisa_device_id hp100_eisa_tbl[] = { { "HWPF180" }, /* HP J2577 rev A */ { "HWP1920" }, /* HP 27248B */ { "HWP1940" }, /* HP J2577 */ diff --git a/drivers/net/ibmlana.c b/drivers/net/ibmlana.c index 136d754..00b1a2c 100644 --- a/drivers/net/ibmlana.c +++ b/drivers/net/ibmlana.c @@ -895,7 +895,7 @@ static int ibmlana_irq; static int ibmlana_io; static int startslot; /* counts through slots when probing multiple devices */ -static const short ibmlana_adapter_ids[] __devinitconst = { +static const short ibmlana_adapter_ids[] = { IBM_LANA_ID, 0x0000 }; diff --git a/drivers/net/irda/smsc-ircc2.c b/drivers/net/irda/smsc-ircc2.c index 69b5707..76929e4 100644 --- a/drivers/net/irda/smsc-ircc2.c +++ b/drivers/net/irda/smsc-ircc2.c @@ -366,7 +366,7 @@ static inline void register_bank(int iobase, int bank) } /* PNP hotplug support */ -static const struct pnp_device_id smsc_ircc_pnp_table[] __devinitconst = { +static const struct pnp_device_id smsc_ircc_pnp_table[] = { { .id = "SMCf010", .driver_data = 0 }, /* and presumably others */ { } diff --git a/drivers/net/ne3210.c b/drivers/net/ne3210.c index e8984b0..3e7fb5b 100644 --- a/drivers/net/ne3210.c +++ b/drivers/net/ne3210.c @@ -316,7 +316,7 @@ static void ne3210_block_output(struct net_device *dev, int count, memcpy_toio(shmem, buf, count); } -static const struct eisa_device_id ne3210_ids[] __devinitconst = { +static const struct eisa_device_id ne3210_ids[] = { { "EGL0101" }, { "NVL1801" }, { "" }, diff --git a/drivers/net/smc-mca.c b/drivers/net/smc-mca.c index 0f29f26..76abd94 100644 --- a/drivers/net/smc-mca.c +++ b/drivers/net/smc-mca.c @@ -156,7 +156,7 @@ static const struct { { 14, 15 } }; -static const short smc_mca_adapter_ids[] __devinitconst = { +static const short smc_mca_adapter_ids[] = { 0x61c8, 0x61c9, 0x6fc0, diff --git a/drivers/net/tokenring/madgemc.c b/drivers/net/tokenring/madgemc.c index 1313aa1..44b96f2 100644 --- a/drivers/net/tokenring/madgemc.c +++ b/drivers/net/tokenring/madgemc.c @@ -727,7 +727,7 @@ static int __devexit madgemc_remove(struct device *device) return 0; } -static const short madgemc_adapter_ids[] __devinitconst = { +static const short madgemc_adapter_ids[] = { 0x002d, 0x0000 }; diff --git a/drivers/net/tulip/de4x5.c b/drivers/net/tulip/de4x5.c index 45144d5..40c0aa2 100644 --- a/drivers/net/tulip/de4x5.c +++ b/drivers/net/tulip/de4x5.c @@ -2097,7 +2097,7 @@ static int __devexit de4x5_eisa_remove (struct device *device) return 0; } -static const struct eisa_device_id de4x5_eisa_ids[] __devinitconst = { +static const struct eisa_device_id de4x5_eisa_ids[] = { { "DEC4250", 0 }, /* 0 is the board name index... */ { "" } }; ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-05-31 22:45 ` David Miller @ 2011-06-01 1:27 ` Michał Mirosław 2011-06-01 2:24 ` David Miller 2011-06-01 1:42 ` James Bottomley 1 sibling, 1 reply; 8+ messages in thread From: Michał Mirosław @ 2011-06-01 1:27 UTC (permalink / raw) To: David Miller; +Cc: James.Bottomley, netdev On Tue, May 31, 2011 at 03:45:31PM -0700, David Miller wrote: > From: James Bottomley <James.Bottomley@HansenPartnership.com> > Date: Thu, 26 May 2011 16:39:53 -0500 > > BTW, linux-netdev doesn't exist, it's just plain netdev. > > > Simply reverting > > > > commit e5cb966c0838e4da43a3b0751bdcac7fe719f7b4 > > Author: Micha<C5><82> Miros<C5><82>aw <mirq-linux@rere.qmqm.pl> > > Date: Mon Apr 18 13:31:20 2011 +0000 > > > > net: fix section mismatches > > > > Fixes the problem. > > > > If I look at the first problem in hp100.c, the addition of > > __devinitconst to the device tables is fine, but there's no > > corresponding sectional tag on their use, so when compiled as a module, > > things like hp100_eisa_driver is now in the main data section but refers > > to something in the init data section ... I assume all the others are > > the same type of problem. > Yeah I think the device ID table __devinitconst bits have to be > reverted. __devinitconst ID tables do work for PCI drivers. What's different for EISA, and why is it working in x86 allyesconfig build but not in hppa? Best Regards, Michał Mirosław ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-06-01 1:27 ` Michał Mirosław @ 2011-06-01 2:24 ` David Miller 0 siblings, 0 replies; 8+ messages in thread From: David Miller @ 2011-06-01 2:24 UTC (permalink / raw) To: mirq-linux; +Cc: James.Bottomley, netdev From: Michał Mirosław <mirq-linux@rere.qmqm.pl> Date: Wed, 1 Jun 2011 03:27:40 +0200 > __devinitconst ID tables do work for PCI drivers. What's different for EISA, > and why is it working in x86 allyesconfig build but not in hppa? James shows that it doesn't work for PCI drivers either. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-05-31 22:45 ` David Miller 2011-06-01 1:27 ` Michał Mirosław @ 2011-06-01 1:42 ` James Bottomley 2011-06-01 2:25 ` David Miller 2011-06-18 17:06 ` Michał Mirosław 1 sibling, 2 replies; 8+ messages in thread From: James Bottomley @ 2011-06-01 1:42 UTC (permalink / raw) To: David Miller; +Cc: mirq-linux, netdev On Tue, 2011-05-31 at 15:45 -0700, David Miller wrote: > From: James Bottomley <James.Bottomley@HansenPartnership.com> > Date: Thu, 26 May 2011 16:39:53 -0500 > > BTW, linux-netdev doesn't exist, it's just plain netdev. Um, yes ... I thought it was netdev, then I checked MARC and it had linux-netdev. I'll remember for next time (well, at least for the next six months). > > Simply reverting > > > > commit e5cb966c0838e4da43a3b0751bdcac7fe719f7b4 > > Author: Micha<C5><82> Miros<C5><82>aw <mirq-linux@rere.qmqm.pl> > > Date: Mon Apr 18 13:31:20 2011 +0000 > > > > net: fix section mismatches > > > > Fixes the problem. > > > > If I look at the first problem in hp100.c, the addition of > > __devinitconst to the device tables is fine, but there's no > > corresponding sectional tag on their use, so when compiled as a module, > > things like hp100_eisa_driver is now in the main data section but refers > > to something in the init data section ... I assume all the others are > > the same type of problem. > > Yeah I think the device ID table __devinitconst bits have to be > reverted. > > I'll apply something like the following: > > net: Revert adding __devinitconst to driver ID tables. > > If the table is hooked up to foo_driver->id_table we can't > mark it __devinitconst otherwise we end up with section > mismatches. > > Reported-by: James Bottomley <James.Bottomley@HansenPartnership.com> > Signed-off-by: David S. Miller <davem@davemloft.net> That fixes some but not all; the pci tables still cause a section conflict: drivers/net/hp100.c:211: error: hp100_pci_tbl causes a section type conflict make[2]: *** [drivers/net/hp100.o] Error 1 It's really, as has been said, a compiler problem: the compiler is confused about the read only sections. However, 4.2 is a pretty common compiler (especially for non-x86), so if the compiler can't do the read only section tracking, just not using the __devinitconst designation globally seems to be the best thing, just change it to __devinitdata instead. James ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-06-01 1:42 ` James Bottomley @ 2011-06-01 2:25 ` David Miller 2011-06-18 17:06 ` Michał Mirosław 1 sibling, 0 replies; 8+ messages in thread From: David Miller @ 2011-06-01 2:25 UTC (permalink / raw) To: James.Bottomley; +Cc: mirq-linux, netdev From: James Bottomley <James.Bottomley@HansenPartnership.com> Date: Wed, 01 Jun 2011 10:42:50 +0900 > It's really, as has been said, a compiler problem: the compiler is > confused about the read only sections. However, 4.2 is a pretty common > compiler (especially for non-x86), so if the compiler can't do the read > only section tracking, just not using the __devinitconst designation > globally seems to be the best thing, just change it to __devinitdata > instead. I think I'm just going to do a full revert then. You guys work out how to arrive at a solution that solves the problem he was originally trying to solve, yet doesn't break this gcc-4.2 case. Thanks. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Section conflict compile failures in net 2011-06-01 1:42 ` James Bottomley 2011-06-01 2:25 ` David Miller @ 2011-06-18 17:06 ` Michał Mirosław 1 sibling, 0 replies; 8+ messages in thread From: Michał Mirosław @ 2011-06-18 17:06 UTC (permalink / raw) To: James Bottomley; +Cc: David Miller, netdev On Wed, Jun 01, 2011 at 10:42:50AM +0900, James Bottomley wrote: > On Tue, 2011-05-31 at 15:45 -0700, David Miller wrote: > > From: James Bottomley <James.Bottomley@HansenPartnership.com> > > Date: Thu, 26 May 2011 16:39:53 -0500 > > > > BTW, linux-netdev doesn't exist, it's just plain netdev. > > Um, yes ... I thought it was netdev, then I checked MARC and it had > linux-netdev. I'll remember for next time (well, at least for the next > six months). > > > > Simply reverting > > > > > > commit e5cb966c0838e4da43a3b0751bdcac7fe719f7b4 > > > Author: Micha<C5><82> Miros<C5><82>aw <mirq-linux@rere.qmqm.pl> > > > Date: Mon Apr 18 13:31:20 2011 +0000 > > > > > > net: fix section mismatches > > > > > > Fixes the problem. > > > > > > If I look at the first problem in hp100.c, the addition of > > > __devinitconst to the device tables is fine, but there's no > > > corresponding sectional tag on their use, so when compiled as a module, > > > things like hp100_eisa_driver is now in the main data section but refers > > > to something in the init data section ... I assume all the others are > > > the same type of problem. > > > > Yeah I think the device ID table __devinitconst bits have to be > > reverted. > > > > I'll apply something like the following: > > > > net: Revert adding __devinitconst to driver ID tables. > > > > If the table is hooked up to foo_driver->id_table we can't > > mark it __devinitconst otherwise we end up with section > > mismatches. > > > > Reported-by: James Bottomley <James.Bottomley@HansenPartnership.com> > > Signed-off-by: David S. Miller <davem@davemloft.net> > > That fixes some but not all; the pci tables still cause a section > conflict: > > drivers/net/hp100.c:211: error: hp100_pci_tbl causes a section type conflict > make[2]: *** [drivers/net/hp100.o] Error 1 > > > It's really, as has been said, a compiler problem: the compiler is > confused about the read only sections. However, 4.2 is a pretty common > compiler (especially for non-x86), so if the compiler can't do the read > only section tracking, just not using the __devinitconst designation > globally seems to be the best thing, just change it to __devinitdata > instead. So maybe just #define __devinitconst __devinitdata for those broken gcc versions? Best Regards, Michał Mirosław ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2011-06-18 17:06 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <1306445993.4048.58.camel@mulgrave.site> [not found] ` <20110527080728.GA2108@rere.qmqm.pl> 2011-05-27 23:04 ` Section conflict compile failures in net James Bottomley 2011-05-28 9:05 ` Michał Mirosław 2011-05-31 22:45 ` David Miller 2011-06-01 1:27 ` Michał Mirosław 2011-06-01 2:24 ` David Miller 2011-06-01 1:42 ` James Bottomley 2011-06-01 2:25 ` David Miller 2011-06-18 17:06 ` Michał Mirosław
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).