Memory Check Crash when loading modules

Dean McBride dmcbride at
Fri Mar 8 01:44:07 EST 2002

Hello everyone,

I'm having a problem loading modules on a 2.4.10-pre10 system.
I'm new at linux & I need to develop a module, so I attempted coding
up the hello.o module from the Linux Device Driver O'Reilly book.  I
load the module using insmod & get the following crash dump (Not
OOPS though?!?).  I've also tried loading modules delivered with the
kernel and get the same affect.

It's crashing in the sys_create_module() call when it calls memset:

         memset(mod, 0, sizeof(*mod));

the address of mod is 0xe1000000, obtained from the module_map()
call which is using vmalloc().  I did notice in the pgtable.h file a comment
where the VMALLOC_OFFSET is defined:

  * We no longer map larger than phys RAM with the BATs so we don't have
  * to worry about the VMALLOC_OFFSET causing problems.  We do have to worry
  * about clashes between our early calls to ioremap() that start growing down
  * from ioremap_base being run into the VM area allocations (growing upwards
  * from VMALLOC_START).  For this reason we have ioremap_bot to check when
  * we actually run into our mappings setup in the early boot with the VM
  * system.  This really does become a problem for machines with good amounts
  * of RAM.  -- Cort

Any help, suggestions, debug tips would be greatly appreciated.  I've included
the crash & other info below.


Here's the output when I have the noload set on insmod:
sh-2.03# insmod -vmn ./hello.o
Using ./hello.o
Symbol version prefix 'smp_'
Sections:       Size      Address   Align
.this           00000060  12340000  2**2
.text           00000080  12340060  2**2
.rodata         00000028  123400e0  2**2
.data           00000000  12340108  2**0
.kstrtab        00000079  12340108  2**0
.bss            00000000  12340181  2**0
.plt            00000010  12340190  2**4
__ksymtab       00000018  123401a0  2**2
__archdata      00000000  123401c0  2**4

00000000 a hello.c
12340000 d __this_module
12340000 D __insmod_hello_O/opt/ds/src/hello/hello.o_M3C86C918_V132106
12340060 T __insmod_hello_S.text_L128
12340060 t .text
12340060 t init_module
123400a4 t cleanup_module
123400e0 r .rodata
123400e0 t Letext
123400e0 R __insmod_hello_S.rodata_L40
12340108 d .data
12340181 d .bss

Here's the Crash info:
sh-2.03# insmod -vm ./hello.o
Using ./hello.o
Symbol version prefix 'smp_'
Machine check in kernel mode.
Machine check in kernel mode.
Caused by (from SRR1=89032): Caused by (from SRR1=89032): Machine check signal
Machine check signal
Kernel stack overflow in process c017c490, r1=c017c780
Kernel stack overflow in process dee6a000, r1=dee6a270

Hardware Info:
Motorola PowerPC 7400 @ 400MHz with 512MB SDRAM. (4 processors)

Here's my boot output:
DNA Enterprises, Inc.
VQG4 Board
ROM Startup
System Processor A
Sep 27 2001  09:56:31
Motorola PowerPC 7400 @ 400MHz with 512MB SDRAM.

                             DNA Boot

CPU: DNA VQG4 7400
Boot Version: 1.2 BOOT Rev 3.0
Creation date: Sep 27 2001, 09:56:46

Press any key to stop auto-boot...

boot device          : dp
unit number          : 0
processor number     : 0
host name            :
file name            : /tmp/zImage.initrd
inet on ethernet (e) :
host inet (h)        :
gateway inet (g)     :
user (u)             :
ftp password (pw)    :
flags (f)            : 0x0
target name (tn)     : vq750
other (o)            : linux

Attached TCP/IP interface to dp0.
Attaching network interface lo0... done.
Loading... binary Module found...size=4869138
Starting at 0x200000...

loaded at:     00200000 00211BE0
relocated to:  00800000 00811BE0
board data at: 0080B0C4 00811AD0
relocated to:  0080B0C4 00811AD0
zimage at:     00208000 002B56E5
relocated to:  00812000 008BF6E5
initrd at:     002B56E5 006A3442
relocated to:  008C0000 00CADD5D
avail ram:     00400000 00800000

Linux/PPC load: console=ttyS0,9600n8 root=/dev/ram rw
.249: ramdisk_size=15360
Uncompressing Linux...done.
Now booting the kernel
Total memory = 512MB; using 2048kB for hash table (at c0200000)
Linux version 2.4.10-pre10 (dean at (gcc version 2.95.3
20010315 (
release/MontaVista)) #23 SMP Wed Mar 6 22:46:18 EST 2002
Dna Vx750 linux port: Ver# 3.1
L2 Cache Enabled: cpu=0,bus=100MHz,core=400MHz,L2CR=89000000
FPGA setup complete
On node 0 totalpages: 131072
zone(0): 131072 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,9600n8 root=/dev/ram rw
168.1.249: ramdisk_size=15360
Decrementer Freq = 25.0MHz
Warning: real time clock seems stuck!
Calibrating delay loop... 799.53 BogoMIPS
Memory: 506704k available (1248k kernel code, 596k data, 172k init, 0k highmem)
Dentry-cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
Mount-cache hash table entries: 8192 (order: 4, 65536 bytes)
Buffer-cache hash table entries: 32768 (order: 5, 131072 bytes)
Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
POSIX conformance testing by UNIFIX
Entering SMP Mode...
number of CPUS found= 4
L2 Cache Enabled: cpu=1,bus=100MHz,core=400MHz,L2CR=89000000
syncing 1
syncing 0
smp_vq750_setup_cpu cpu 1
Processor 1 found.
L2 Cache Enabled: cpu=2,bus=100MHz,core=400MHz,L2CR=89000000
syncing 0
syncing 2
Processor 2 found.
smp_vq750_setup_cpu cpu 2
L2 Cache Enabled: cpu=3,bus=100MHz,core=400MHz,L2CR=89000000
syncing 0
syncing 3
Processor 3 found.
smp_vq750_setup_cpu cpu 3
smp_vq750_setup_cpu cpu 0
PCI: Probing PCI hardware
Memory resource not set for host bridge 0
Memory resource not set for host bridge 1
running VQ750 PCI bios Fixups
No interrupt requested.
Interrupt line(000,01,1) = 23
Interrupt line(000,02,1) = 13
Interrupt line(000,04,1) = 12
Interrupt line(000,05,1) = 0
No interrupt requested.
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
register vq proc
Starting kswapd v1.8
Serial driver version 5.05c (2001-07-08) with no serial options enabled
ttyS00 at 0x0001 (irq = 27) is a ST16654
block: 128 slots per queue, batch=16
RAMDISK driver initialized: 16 RAM disks of 15360K size 1024 blocksize
natsemi.c:v1.07 1/9/2001  Written by Donald Becker <becker at>
   (unofficial 2.4.x kernel port, version 1.07+LK1.0.8, Aug 07, 2001  Jeff
, Tjeerd Mulder)
eth0: NatSemi DP83815 at 0xafffe000, 00:30:ea:00:01:b6, IRQ 13.
eth0: Transceiver status 0x7869 advertising 05e1.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 131072 bind 65536)
eth0: link is back. Enabling watchdog.
IP-Config: Complete:
       device=eth0, addr=, mask=, gw=,
      host=ds, domain=, nis-domain=(none),
      bootserver=, rootserver=, rootpath=
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 4023k freed
EXT2-fs warning: maximal mount count reached, running e2fsck is recommended
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 172k init 4k openfirmware
INIT: version 2.78 booting
Hostname: ds.
Starting portmap daemon: portmap.
Starting portmapper... Mounting remote filesystems...
INIT: Entering runlevel: 3
Starting system log daemon: syslogdsh-2.03#  klogd.
Starting internet superserver: inetd.


** Sent via the linuxppc-embedded mail list. See

More information about the Linuxppc-embedded mailing list