Geoff:

I compiled a stock 2.4.16 kernel without SMP and with the kgdb patch. I then installed my latest version of LiS-2.14.B (just released). The module load went just fine. (I used this kernel just because it is the one that I have been testing with and it has the kgdb patch installed in it already.)

There has been some discussion lately about choice of C compilers for building kernels and LiS. The consensus is that kgcc is the safest. I did notice that you were using gcc3 for your tests, so maybe that is the problem.

So for now I'll assume the ball is back in your court. Try building one of your test kernels and LiS with kgcc and see if the problem persists. If that fixes the problem we will count it as further evidence that gcc3 is not a good compiler to use for kernel level software.

-- Dave

At 08:14 AM 10/29/2002 Tuesday, Geoff Hart wrote:
Hi,

The general problem seems to be that LiS works fine with the 2.4.9-31 kernel
on an SMP (Dual processor) machine, but fails to load (insmod) with a kernel oops on
a uni-processor machine. We have dozens of SMP configurations that are
working, and have been able to reproduce the kernel oops on (all) 4
uni-processor machines. All machines have vastly different hardware
configurations (different # of processors, different speeds, P3/P4, 512MB
ram - 6GB ram, single IDE disk - SCSI RAID-1)

To (try and) keep things simple, I've taken 2, identically configured, brand
new Compaq DL380-2 machines (dual PIII 1.40Gig, 2GB RAM, 2-18Gig HDD in
hardware RAID-1). Installed RedHat 7.2 fresh, and installed the Redhat
2.4.9-31 kernel sources on both machines (same rpms), and then started with
the enterprise kernel configuration file. After removing a few categories of
hardware I didn't need (sound, isdn, firewire, etc), I copied that kernel
config file to both machines. On one machine I then removed smp support and
compiled and installed the kernel on both machines (Thus effectively making
1 machine a single-processor machine). The diff of the 2 kernel config files
is:

67,69c67,68
< # CONFIG_SMP is not set
< # CONFIG_X86_UP_APIC is not set
< # CONFIG_X86_UP_IOAPIC is not set
---

CONFIG_SMP=y
CONFIG_HAVE_DEC_LOCK=y

75a75,76

CONFIG_X86_IO_APIC=y
CONFIG_X86_LOCAL_APIC=y

The SMP machine works fine, when I run 'insmod streams' on the machine
without smp support, I get a segmentation fault on the console and the
following in the kernel log:

Oct 21 08:07:12 test11 kernel: Linux Streams Subsystem loading...
Oct 21 08:07:12 test11 kernel: Streams module "ip_strms" registered, id 5
Oct 21 08:07:12 test11 kernel: Streams module "relay" registered, id 6
Oct 21 08:07:12 test11 kernel: Streams module "relay2" registered, id 7
Oct 21 08:07:12 test11 kernel: Streams driver "clone-drvr" registered, major
230
Oct 21 08:07:12 test11 kernel: Streams driver "fifo" registered, major 231
Oct 21 08:07:12 test11 kernel: Streams driver "fifo" registered, major 232
Oct 21 08:07:12 test11 kernel: Streams driver "loop-around" registered,
major 233
Oct 21 08:07:12 test11 kernel: Unable to handle kernel NULL pointer
dereference at virtual address 00000008
Oct 21 08:07:12 test11 kernel:  printing eip:
Oct 21 08:07:12 test11 kernel: c0142054
Oct 21 08:07:12 test11 kernel: *pde = 34431001
Oct 21 08:07:12 test11 kernel: *pte = 00000000
Oct 21 08:07:12 test11 kernel: Oops: 0000
Oct 21 08:07:12 test11 kernel: Kernel 2.4.9-31custom
Oct 21 08:07:12 test11 kernel: CPU:    0
Oct 21 08:07:12 test11 kernel: EIP:    0010:[block_read_full_page+180/736]
Not tainted
Oct 21 08:07:12 test11 kernel: EIP:    0010:[<c0142054>]    Not tainted
Oct 21 08:07:12 test11 kernel: EFLAGS: 00010202
Oct 21 08:07:12 test11 kernel: EIP is at path_walk [kernel] 0x54
Oct 21 08:07:12 test11 kernel: eax: 00000000   ebx: 00000000   ecx: 00000010
edx: f4635e74
Oct 21 08:07:12 test11 kernel: esi: f5bd6000   edi: f4635e74   ebp: f5bd6001
esp: f4635d9c
Oct 21 08:07:13 test11 kernel: ds: 0018   es: 0018   ss: 0018
Oct 21 08:07:13 test11 kernel: Process insmod (pid: 2300,
stackpage=f4635000)
Oct 21 08:07:13 test11 kernel: Stack: 00000010 00000000 f4635de4 20005453
00000000 00000000 33323130 37363534
Oct 21 08:07:13 test11 kernel:        42413938 46454443 4a494847 4e4d4c4b
5251504f 56555453 5a595857 76757400
Oct 21 08:07:13 test11 kernel:        7a797877 7df83000 33323130 37363534
62613938 66656463 6a696867 6e6d6c6b
Oct 21 08:07:13 test11 kernel: Call Trace: [startup_level_ioapic_irq+0/16]
do_page_fault [kernel] 0x0
Oct 21 08:07:13 test11 kernel: Call Trace: [<c01148e0>] do_page_fault
[kernel] 0x0
Oct 21 08:07:13 test11 kernel: [sys_setresgid+156/256] do_no_page [kernel]
0x16c
Oct 21 08:07:13 test11 kernel: [<c012708c>] do_no_page [kernel] 0x16c
Oct 21 08:07:13 test11 kernel: [<f897fc45>] __insmod_streams_S.rodata_L35424
[streams] 0x565
Oct 21 08:07:13 test11 kernel: [__block_write_full_page+589/608] getname
[kernel] 0x6d
Oct 21 08:07:13 test11 kernel: [<c0141b9d>] getname [kernel] 0x6d
Oct 21 08:07:13 test11 kernel: [<f897fc45>] __insmod_streams_S.rodata_L35424
[streams] 0x565
Oct 21 08:07:13 test11 kernel: [<f898b6fc>] lis_driver_config [streams] 0xb8
Oct 21 08:07:13 test11 kernel: [sync_supers+45/256] sys_unlink [kernel] 0x3d
Oct 21 08:07:13 test11 kernel: [<c014401d>] sys_unlink [kernel] 0x3d
Oct 21 08:07:13 test11 kernel: [reschedule_idle+173/640]
call_console_drivers [kernel] 0x8d
Oct 21 08:07:13 test11 kernel: [<c01182cd>] call_console_drivers [kernel]
0x8d
Oct 21 08:07:13 test11 kernel: [do_signal+363/688] system_call [kernel] 0x33
Oct 21 08:07:13 test11 kernel: [<c0106f6b>] system_call [kernel] 0x33
Oct 21 08:07:13 test11 kernel: [<f897fc45>] __insmod_streams_S.rodata_L35424
[streams] 0x565
Oct 21 08:07:13 test11 kernel: [<f898b6fc>] lis_driver_config [streams] 0xb8
Oct 21 08:07:13 test11 kernel: [<f8970018>] lis_doclose [streams] 0x10ec
Oct 21 08:07:13 test11 kernel: [<f8980018>] __insmod_streams_S.rodata_L35424
[streams] 0x938
Oct 21 08:07:13 test11 kernel: [<f8977107>] lis_unlink [streams] 0x1f
Oct 21 08:07:13 test11 kernel: [<f898b708>] lis_driver_config [streams] 0xc4
Oct 21 08:07:14 test11 kernel: [<f895e63a>] sloop_init [streams] 0xa
Oct 21 08:07:14 test11 kernel: [<f897fc45>] __insmod_streams_S.rodata_L35424
[streams] 0x565
Oct 21 08:07:14 test11 kernel: [<f897348b>] lis_init_mod [streams] 0x25b
Oct 21 08:07:14 test11 kernel: [<f899d3d4>] lis_fstr_sw [streams] 0x4534
Oct 21 08:07:14 test11 kernel: [<f898b748>] lis_driver_config [streams]
0x104
Oct 21 08:07:14 test11 kernel: [<f898b6fc>] lis_driver_config [streams] 0xb8
Oct 21 08:07:14 test11 kernel: [<f8970a83>] lis_init_head [streams] 0x157
Oct 21 08:07:14 test11 kernel: [<f897648c>] lis_init_module [streams] 0xd4
Oct 21 08:07:14 test11 kernel: [<f8977a95>] lis_can_unload [streams] 0x19
Oct 21 08:07:14 test11 kernel: [sleep_on_timeout+117/144] sys_init_module
[kernel] 0x555
Oct 21 08:07:14 test11 kernel: [<c0119215>] sys_init_module [kernel] 0x555
Oct 21 08:07:14 test11 kernel: [<f895e060>] __insmod_streams_S.text_L136768
[streams] 0x0
Oct 21 08:07:14 test11 kernel: [do_signal+363/688] system_call [kernel] 0x33
Oct 21 08:07:14 test11 kernel: [<c0106f6b>] system_call [kernel] 0x33
Oct 21 08:07:14 test11 kernel:
Oct 21 08:07:14 test11 kernel:
Oct 21 08:07:14 test11 kernel: Code: 8b 78 08 b8 00 e0 ff ff 21 e0 8b b0 48
02 00 00 b8 01 00 00

In this configuration, I've got the RedHat 2.4.9-31 kernel, recompiled by me,
and LiS 2.13.25 compiled against the same kernel.

I've reproduced this with the following other combinations:

Kernel.org kernel 2.4.9, LiS 2.13.25
Kernel.org kernel 2.4.9, LiS 2.14.2
Kernel.org kernel 2.4.9, LiS 2.14.13
Kernel.org kernel 2.4.10, LiS 2.13.25
Kernel.org kernel 2.4.10, LiS 2.14.2
Kernel.org kernel 2.4.10, LiS 2.14.13
Kernel.org kernel 2.4.19, LiS 2.13.25
Kernel.org kernel 2.4.19, LiS 2.14.2
Kernel.org kernel 2.4.19, LiS 2.14.13

In every case, when I compile the kernel with SMP support, it works. When I
compile it without SMP support, it fails with the above error, or a similar
error (but always a segfault).

I am compiling with the default make scripts for both LiS and the kernel,
using gcc 3.0.2

The 2.4.9-13 kernel that works right now with uni-processor was the
pre-compiled RedHat kernel, not one we compiled ourselves. All other kernels
were compiled by me.

Can anyone suggestion something we can try to make things work on
single-processor machines? I presume that this driver is designed so that it
can work on single-processor machines?

Thanks,

Geoff Hart




_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

_______________________________________________
Linux-streams mailing list
[EMAIL PROTECTED]
http://gsyc.escet.urjc.es/mailman/listinfo/linux-streams

Reply via email to