linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* missing symbol do_softirq in net moduels for pre-2
@ 2001-06-09 15:07 Ed Tomlinson
  2001-06-09 16:17 ` Keith Owens
  2001-06-09 16:56 ` Wayne Whitney
  0 siblings, 2 replies; 9+ messages in thread
From: Ed Tomlinson @ 2001-06-09 15:07 UTC (permalink / raw)
  To: linux-kernel

Hi,

Built -pre2 and noticed most of the modules in net/* are getting
a missing symbol for do_softirq.  

Have I messed up, or is there a real error?

Ed Tomlinson <tomlins@cam.org>

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 15:07 missing symbol do_softirq in net moduels for pre-2 Ed Tomlinson
@ 2001-06-09 16:17 ` Keith Owens
  2001-06-09 16:56   ` Thomas Langås
  2001-06-09 16:56 ` Wayne Whitney
  1 sibling, 1 reply; 9+ messages in thread
From: Keith Owens @ 2001-06-09 16:17 UTC (permalink / raw)
  To: Ed Tomlinson; +Cc: linux-kernel

On Sat, 9 Jun 2001 11:07:52 -0400, 
Ed Tomlinson <tomlins@cam.org> wrote:
>Built -pre2 and noticed most of the modules in net/* are getting
>a missing symbol for do_softirq.  

http://www.tux.org/lkml/#s8-8


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 16:17 ` Keith Owens
@ 2001-06-09 16:56   ` Thomas Langås
  2001-06-09 17:04     ` Keith Owens
  0 siblings, 1 reply; 9+ messages in thread
From: Thomas Langås @ 2001-06-09 16:56 UTC (permalink / raw)
  To: Keith Owens; +Cc: Ed Tomlinson, linux-kernel

Keith Owens:
> >Built -pre2 and noticed most of the modules in net/* are getting
> >a missing symbol for do_softirq.  
> http://www.tux.org/lkml/#s8-8

I got the same error on -pre1, and tried the info in the link, didn't help:

root@test4:/usr/src# depmod -ae
depmod: *** Unresolved symbols in /lib/modules/2.4.6-pre1/kernel/net/ipv4/netfilter/ip_tables.o
depmod:         do_softirq
depmod: *** Unresolved symbols in /lib/modules/2.4.6-pre1/kernel/net/ipv4/netfilter/ipt_LOG.o
depmod:         do_softirq

Am I missing something in my .config, or is there something else that's
wrong? Any clues to where I should look?

-- 
-Thomas

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 15:07 missing symbol do_softirq in net moduels for pre-2 Ed Tomlinson
  2001-06-09 16:17 ` Keith Owens
@ 2001-06-09 16:56 ` Wayne Whitney
  2001-06-09 17:04   ` Ed Tomlinson
  1 sibling, 1 reply; 9+ messages in thread
From: Wayne Whitney @ 2001-06-09 16:56 UTC (permalink / raw)
  To: kaos, Ed Tomlinson; +Cc: linux-kernel

In mailing-lists.linux-kernel, Keith Owens wrote:

> On Sat, 9 Jun 2001 Ed Tomlinson <tomlins@cam.org> wrote:
>
> > Built -pre2 and noticed most of the modules in net/* are getting 
> > a missing symbol for do_softirq.  
>
> http://www.tux.org/lkml/#s8-8

Hmm, I don't think this is it--I'm seeing the same thing, and I have
tried 'make mrproper'.  All symbols are getting versionated except
certain calls to do_softirq() in, e.g., sunrpc.o and the iptables
modules.

I looked into this, and I believe the problem is due to 2.4.6-pre2's
change to the i386 local_bh_enable() macro--the C version has been
replaced with an assembly language version that does "call
do_doftirq;".  Perhaps this function call from the assembly language
version does not get versionated?  

Cheers, Wayne




^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 16:56 ` Wayne Whitney
@ 2001-06-09 17:04   ` Ed Tomlinson
  0 siblings, 0 replies; 9+ messages in thread
From: Ed Tomlinson @ 2001-06-09 17:04 UTC (permalink / raw)
  To: Wayne Whitney, kaos, Ed Tomlinson; +Cc: linux-kernel

On Saturday 09 June 2001 12:56, Wayne Whitney wrote:
> In mailing-lists.linux-kernel, Keith Owens wrote:
> > On Sat, 9 Jun 2001 Ed Tomlinson <tomlins@cam.org> wrote:
> > > Built -pre2 and noticed most of the modules in net/* are getting
> > > a missing symbol for do_softirq.
> >
> > http://www.tux.org/lkml/#s8-8
>
> Hmm, I don't think this is it--I'm seeing the same thing, and I have
> tried 'make mrproper'.  All symbols are getting versionated except
> certain calls to do_softirq() in, e.g., sunrpc.o and the iptables
> modules.
>
> I looked into this, and I believe the problem is due to 2.4.6-pre2's
> change to the i386 local_bh_enable() macro--the C version has been
> replaced with an assembly language version that does "call
> do_doftirq;".  Perhaps this function call from the assembly language
> version does not get versionated?

In my case its off a clean tree patched with lvm, ide patches, dma timeout
retry patch and reiserfs fixes.  Did we not have a problem a while back
in ac with versioned symbols in assembly?

Ed Tomlinson

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 16:56   ` Thomas Langås
@ 2001-06-09 17:04     ` Keith Owens
  2001-06-09 17:20       ` Ed Tomlinson
  2001-06-09 18:13       ` Wayne Whitney
  0 siblings, 2 replies; 9+ messages in thread
From: Keith Owens @ 2001-06-09 17:04 UTC (permalink / raw)
  To: tlan; +Cc: Ed Tomlinson, linux-kernel

On Sat, 9 Jun 2001 18:56:24 +0200, 
=?iso-8859-1?Q?Thomas_Lang=E5s?= <tlan@stud.ntnu.no> wrote:
>Keith Owens:
>> >Built -pre2 and noticed most of the modules in net/* are getting
>> >a missing symbol for do_softirq.  
>> http://www.tux.org/lkml/#s8-8
>
>I got the same error on -pre1, and tried the info in the link, didn't help:
>
>root@test4:/usr/src# depmod -ae
>depmod: *** Unresolved symbols in /lib/modules/2.4.6-pre1/kernel/net/ipv4/netfilter/ip_tables.o
>depmod:         do_softirq

It was missing in 6-pre1.  It should have been fixed in 6-pre2.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 17:04     ` Keith Owens
@ 2001-06-09 17:20       ` Ed Tomlinson
  2001-06-09 18:13       ` Wayne Whitney
  1 sibling, 0 replies; 9+ messages in thread
From: Ed Tomlinson @ 2001-06-09 17:20 UTC (permalink / raw)
  To: Keith Owens, tlan; +Cc: Ed Tomlinson, linux-kernel

On Saturday 09 June 2001 13:04, Keith Owens wrote:
> On Sat, 9 Jun 2001 18:56:24 +0200,
>
> =?iso-8859-1?Q?Thomas_Lang=E5s?= <tlan@stud.ntnu.no> wrote:
> >Keith Owens:
> >> >Built -pre2 and noticed most of the modules in net/* are getting
> >> >a missing symbol for do_softirq.
> >>
> >> http://www.tux.org/lkml/#s8-8
> >
> >I got the same error on -pre1, and tried the info in the link, didn't
> > help:
> >
> >root@test4:/usr/src# depmod -ae
> >depmod: *** Unresolved symbols in
> > /lib/modules/2.4.6-pre1/kernel/net/ipv4/netfilter/ip_tables.o depmod:    
> >     do_softirq
>
> It was missing in 6-pre1.  It should have been fixed in 6-pre2.

The fix to export ksyms for do_softirq is _in_ pre2...  its just not working.

from ksyms in pre2:
/* software interrupts */
EXPORT_SYMBOL(tasklet_hi_vec);
EXPORT_SYMBOL(tasklet_vec);
EXPORT_SYMBOL(bh_task_vec);
EXPORT_SYMBOL(init_bh);
EXPORT_SYMBOL(remove_bh);
EXPORT_SYMBOL(tasklet_init);
EXPORT_SYMBOL(tasklet_kill);
EXPORT_SYMBOL(__run_task_queue);
EXPORT_SYMBOL(do_softirq);
EXPORT_SYMBOL(tasklet_schedule);
EXPORT_SYMBOL(tasklet_hi_schedule);

in the arch code for softirq we now have:

+#define local_bh_enable()                                              \
+do {                                                                   \
+       unsigned int *ptr = &local_bh_count(smp_processor_id());        \
+                                                                       \
+       if (!--*ptr)                                                    \
+               __asm__ __volatile__ (                                  \
+                       "cmpl $0, -8(%0);"                              \
+                       "jnz 2f;"                                       \
+                       "1:;"                                           \
+                                                                       \
+                       ".section .text.lock,\"ax\";"                   \
+                       "2: pushl %%eax; pushl %%ecx; pushl %%edx;"     \
+                       "call do_softirq;"

What has to happen to get assembly code to version the symbol?

Ed Tomlinson

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 17:04     ` Keith Owens
  2001-06-09 17:20       ` Ed Tomlinson
@ 2001-06-09 18:13       ` Wayne Whitney
  2001-06-09 18:28         ` Keith Owens
  1 sibling, 1 reply; 9+ messages in thread
From: Wayne Whitney @ 2001-06-09 18:13 UTC (permalink / raw)
  To: tomlins, Keith Owens, tlan; +Cc: linux-kernel, whitney

On 09 June 2001, Ed Tomlinson wrote:

>in the arch code for softirq we now have:
>
>+#define local_bh_enable()                                              \
>+do {                                                                   \
>+       unsigned int *ptr = &local_bh_count(smp_processor_id());        \
>+                                                                       \
>+       if (!--*ptr)                                                    \
>+               __asm__ __volatile__ (                                  \
>+                       "cmpl $0, -8(%0);"                              \
>+                       "jnz 2f;"                                       \
>+                       "1:;"                                           \
>+                                                                       \
>+                       ".section .text.lock,\"ax\";"                   \
>+                       "2: pushl %%eax; pushl %%ecx; pushl %%edx;"     \
>+                       "call do_softirq;"
>
>What has to happen to get assembly code to version the symbol?

I have verified that the versioning of the do_softirq symbol above is
the source of the problems in 2.4.6-pre2: I made two copies of the
local_bh_enable macro, one with the versioning hash explicitly
appended to the symbol, and chose between with #ifdef MODULE.
Everything works fine now.

Of course, this is ugly, ugly, ugly, so hopefully someone will answer
Ed's question as to the correct way of doing this.

Cheers, Wayne


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: missing symbol do_softirq in net moduels for pre-2
  2001-06-09 18:13       ` Wayne Whitney
@ 2001-06-09 18:28         ` Keith Owens
  0 siblings, 0 replies; 9+ messages in thread
From: Keith Owens @ 2001-06-09 18:28 UTC (permalink / raw)
  To: whitney; +Cc: tomlins, tlan, linux-kernel, mingo, torvalds

On Sat, 9 Jun 2001 11:13:46 -0700, 
Wayne Whitney <whitney@math.berkeley.edu> wrote:
>I have verified that the versioning of the do_softirq symbol above is
>the source of the problems in 2.4.6-pre2

Resend, the first patch never appeared.  The problem is the call to
do_softirq inside an asm string where cpp cannot convert it.  The
correct fix is toe xpose do_softirq so cpp can convert it then map to a
string and concatenate with teh asm string.  But that requires ugly
helper macros, a cleaner fix is:

Against 2.4.6-pre2.  Note: you must run make mrproper after applying
this patch.

Index: 6-pre2.1/kernel/ksyms.c
--- 6-pre2.1/kernel/ksyms.c Sat, 09 Jun 2001 11:25:53 +1000 kaos (linux-2.4/j/46_ksyms.c 1.1.2.2.1.1.2.1.1.8.2.1.2.1 644)
+++ 6-pre2.1(w)/kernel/ksyms.c Sun, 10 Jun 2001 03:36:12 +1000 kaos (linux-2.4/j/46_ksyms.c 1.1.2.2.1.1.2.1.1.8.2.1.2.1 644)
@@ -536,7 +536,7 @@ EXPORT_SYMBOL(remove_bh);
 EXPORT_SYMBOL(tasklet_init);
 EXPORT_SYMBOL(tasklet_kill);
 EXPORT_SYMBOL(__run_task_queue);
-EXPORT_SYMBOL(do_softirq);
+EXPORT_SYMBOL_NOVERS(do_softirq);
 EXPORT_SYMBOL(tasklet_schedule);
 EXPORT_SYMBOL(tasklet_hi_schedule);
 


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2001-06-09 18:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-09 15:07 missing symbol do_softirq in net moduels for pre-2 Ed Tomlinson
2001-06-09 16:17 ` Keith Owens
2001-06-09 16:56   ` Thomas Langås
2001-06-09 17:04     ` Keith Owens
2001-06-09 17:20       ` Ed Tomlinson
2001-06-09 18:13       ` Wayne Whitney
2001-06-09 18:28         ` Keith Owens
2001-06-09 16:56 ` Wayne Whitney
2001-06-09 17:04   ` Ed Tomlinson

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).