Subject: EBSA285 boot problems

From: [email-masked]
Date: Thu, 13 Jan 2000 19:51:18 -0800

I'm trying to get the 2.3.35 Linux kernel running on an unmodified EBSA285 in
host mode with no peripherals.  I'm planning on using only a ramdisk in the
final system, but I'm having trouble getting the kernel to load the ramdisk
properly.  I've modified the bios v1.06 to copy my flash images (zImage,
ramdisk.gz) to addresses 0x8000 and 0x800000 respectively.  The ramdisk is a
gzipped ext2 filesystem that I created following the instructions from Intel's
web site.  I have verified that everything is properly copied into RAM at the
appropriate address.  I'm rather unfamiliar with the Linux boot procedure, so
I've tried to imitate the booting procedure of a previous posting to this
newsgroup.

I'm booting the kernel with the following parameters:
initrd_start = 0xC0800000
initrd_size=1392506 (my ramdisk size in bytes)
root_device=0x0100
root_flags=4

These are the results I get from printk:
=======================================
Uncompressing Linux.................................................. done, boot
ing the kernel.
Linux version 2.3.35-rmk1 ([email-masked]) (gcc version 2.95.
1 19990816 (release)) #6 Mon Jan 3 12:25:51 PST 2000
On node 0 totalpages: 00001000
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Console: colour dummy device 80x50
Calibrating delay loop... 214.63 BogoMIPS
Memory: 16MB = 16MB total
Memory: 12840KB available (1282K code, 463K data, 112K init)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
<7>PCI: DC21285 footbridge, revision 04
<6>Linux NET4.0 for Linux 2.3
<6>Based upon Swansea University Computer Society NET3.039
<6>NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
<6>NET4: Linux TCP/IP 1.0 for NET4.0
<6>IP Protocols: ICMP, UDP, TCP
TCP: Hash tables configured (established 1024 bind 2048)
Starting kswapd v1.6
<7>PCI: master abort pc=[<C0104A0C>]
<6>Serial driver version 4.91 (1999-11-17) with MANY_PORTS SHARE_IRQ SERIAL_PCI
PCI_IOMEM enabled
pty: 256 Unix98 ptys configured
Software Watchdog Timer: 0.05, timer margin: 60 sec
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
<6>loop: registered device at major 7
<6>loop: enabling 8 loop devices
<6>Uniform Multi-Platform E-IDE driver Revision: 6.21
<6>3c59x.c:v0.99H 11/17/98 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drive
rs/vortex.html
<3>IP-Config: No network devices available.
<5>RAMDISK: Couldn't find valid RAM disk image starting at 0.
Freeing initrd memory: 4194303k freed
<6>Real Time Clock Driver v1.09b
<3>rtc: IRQ 8 is not free.
<4>NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
<0>Kernel panic: VFS: Unable to mount root fs on 01:00
=========================================
I've also tried adding rd_start=8192 to the command line, but this gives me the
following oops message.

<1>Unable to handle kernel paging request at virtual address c1000000
<1>pgd = c0004000
<1>*pgd = 00000000, *pmd = 00000000
Internal error: Oops: 2
CPU: 0
pc : [<c012e834>]    lr : [<c00dee8c>]
sp : c095da6c  ip : 00000000  fp : c095daa0
r10: 00800000  r9 : ffffffff  r8 : 00002000
r7 : c095dc68  r6 : c0955000  r5 : c095dc84  r4 : 00000200
r3 : 00000000  r2 : 000001fc  r1 : c1000000  r0 : c0955000
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  Segment kernel
Control: 517D  Table: 0000517D  DAC: 0000001D
Process swapper (pid: 1, stackpage=c095d000)

It seems as though the initial ramdisk parameters remove the ramdisk image from
the memory map.

Could someone clarify my confusion regarding the proper parameters to pass to
the kernel.  Any help is greatly appreciated.
Thanks.

Dustin.

Dustin McIntire
Engineer
Rockwell Science Center
[email-masked]

unsubscribe: body of `unsubscribe linux-arm-kernel' to [email-masked]

---

From: Nicolas Pitre <[email-masked]>
Date: Fri, 14 Jan 2000 10:13:37 -0500 (EST)

On Thu, 13 Jan 2000 [email-masked] wrote:

[...]
> pc : [<c012e834>]    lr : [<c00dee8c>]
[...]

Try to give the corresponding symbol name from the System.map file next
time, especially the name of the function the PC is in.  It's then easier
to tell where the crash is.

I had kind of the same problem with some 2.3.x kernels. Though I don't
know if it is still required, but you could try this patch:

--- ../2.3.35-rmk1/linux/fs/buffer.c    Sat Jan  1 18:59:58 2000
+++ linux/fs/buffer.c   Tue Jan  4 21:49:38 2000
@@ -2456,6 +2456,7 @@
 {
        kernel_thread(bdflush, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
        kernel_thread(kupdate, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGHAND);
+       schedule();
        return 0;
 }

Nicolas