Interrupt problem on MVME2100

okorpil at fh-landshut.de okorpil at fh-landshut.de
Mon Apr 5 23:23:32 EST 2004


Hello!

I've spent the weekend porting Andrew Johnon's MVME2100 patch for the
HHL2.0 Linux kernel 2.4.2 to kernel.org 2.4.25.

I consider it mostly a success, since the new version - you find it here:

http://www.fh-landshut.de/~okorpil/mvme2100-linux-2.4.25.patch.bz2
http://www.fh-landshut.de/~okorpil/mvme2100-linux-2.4.25.patch.gz

- will correctly boot a zImage off ethernet, mount a NFS root (which is
verified because it starts binaries off it later), gives it output in the
debug serial console...

So, now I have ethernet working, and serial console mostly working...

Mostly because it shows the kernel boot process correctly - and fast! -
and then falls into a slow mode when putting out the messages from init.

It has been mentioned here on the mailing list, that this derives from
incorrectly setup interrupts - characters are reflected on the serial
console as if several were spit out on every timeout.

Unfortunately Andrew Johnson mentioned on the discussion

http://lists.linuxppc.org/linuxppc-embedded/200107/msg00063.html

that he simply ignored that (UART serial) interrupt (at 29) because it had
"too high" a number.

So combining that, I think the driver doesn't get to see the interrupt,
and therefore is so slow.

The problem may derive from two facts. First, there is a (too) limited set
of interrupts defined, and second, the MVME2100 has unused interrupts -
you could say holes in the interrupt map.

First 16 interrupts are left free because there is no cascaded 8259, if I
understand correctly, and then there are several unused interrupts (as
stated in the manual).

Andrew Johnson originally suggested to use something cannonicalize_irq ()
to drop the inconsistencies.

If you want to make a picture yourself, look at the definition of
__initdata  in arch/ppc/platforms/mvme2100.c, where interrupt map is
initialized.

My problem is this: How go I best about bringing my interrupts into range?
Do I need to remap something? Do I redefine a constant defining the
maximum?

The config file is in the patch as arch/ppc/configs/mvme2100_defconfig

Thanks in advance, Oliver Korpilla

My boot output:

Network Boot File load in progress... To abort hit <BREAK>

Bytes Received =&801471, Bytes Loaded =&801471
Bytes/Second   =&801471, Elapsed Time =1 Second(s)

Residual-Data Located at: $01F5511C
loaded at:     00005400 000CA5BC
relocated to:  00800000 008C51BC
zimage at:     00805910 008C1F2A
avail ram:     00400000 00800000

Linux/PPC load: console=ttyS0,9600 root=/dev/nfs
nfsroot=192.168.1.1:/home/korpo/praktikum/mvme2100/rootfs
ip=192.168.1.3:192.168.1.1::255.255.255.0:mvme2100::off
Uncompressing Linux...done.
Now booting the kernel
Memory BAT mapping: BAT2=32Mb, BAT3=0Mb, residual: 0Mb
Linux version 2.4.25 (korpo at ppcproject1) (gcc version 2.95.3 20010315
(release)) #48 Mon Apr 5 13:40:52 CEST 2004
Platform: Motorola MVME2100
On node 0 totalpages: 8192
zone(0): 8192 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: console=ttyS0,9600 root=/dev/nfs
nfsroot=192.168.1.1:/home/korpo/praktikum/mvme2100/rootfs
ip=192.168.1.3:192.168.1.1::255.255.255.0:mvme2100::off
OpenPIC Version 1.2 (1 CPUs and 24 IRQ sources) at f7fd0000
OpenPIC timer frequency is 8.333344 MHz
time_init: decrementer frequency = 16.666765 MHz
Calibrating delay loop... 133.12 BogoMIPS
Memory: 30388k available (1260k kernel code, 472k data, 252k init, 0k
highmem)
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
POSIX conformance testing by UNIFIX
PCI: Probing PCI hardware
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
Starting kswapd
Installing knfsd (copyright (C) 1996 okir at monad.swb.de).
JFFS2 version 2.1. (C) 2001 Red Hat, Inc., designed by Axis Communications
AB.
pty: 256 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS SHARE_IRQ
SERIAL_PCI enabled
ttyS00 at 0xffe10000 (irq = 29) is a 16550A
Real Time Clock Driver v1.10f
Generic RTC Driver v1.07
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
loop: loaded (max 8 devices)
Linux Tulip driver version 0.9.15-pre12 (Aug 9, 2002)
tulip0:  EEPROM default media type Autosense.
tulip0:  Index #0 - Media MII (#11) described by a 21142 MII PHY (3)
block.
tulip0:  MII transceiver #8 config 1000 status 7809 advertising 01e1.
eth0: Digital DS21143 Tulip rev 65 at 0xbfffec00, 00:01:AF:02:93:8C, IRQ
17.
pcnet32.c:v1.27a 10.02.2002 tsbogend at alpha.franken.de
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 2048 bind 2048)
IP-Config: Complete:
      device=eth0, addr=192.168.1.3, mask=255.255.255.0,
gw=255.255.255.255,
     host=mvme2100, domain=, nis-domain=(none),
     bootserver=192.168.1.1, rootserver=192.168.1.1, rootpath=
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
Looking up port of RPC 100003/2 on 192.168.1.1
Looking up port of RPC 100005/1 on 192.168.1.1
VFS: Mounted root (nfs filesystem).
Freeing unused kernel memory: 252k init
eth0: Setting full-duplex based on MII#8 link partner capability of 45e1.
init started:  BusyBox v1.00-pre8 (2004.03.29-15:26+0000) multi-call
binary


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list