* EST SBC8260 Linux memory mapping rules
@ 2000-05-20 0:54 diekema_jon
2000-05-20 1:34 ` Dan Malek
0 siblings, 1 reply; 8+ messages in thread
From: diekema_jon @ 2000-05-20 0:54 UTC (permalink / raw)
To: linuxppc-embedded
I have attempted to capture the Linux memory mapping rules, and how
they apply to the EST SBC8260 board. I would appreciate any
comments on how this can be improved.
After the comments have been rolled in, I would like to publish this
as Documentation/powerpc/SBC8260_memory_mapping.txt in the Linux
kernel source tree.
* EST SBC8260 Linux memory mapping rules
Initial conditions:
-------------------
Tasks that need to be perform by the boot ROM before control is
transferred to zImage (compressed Linux kernel):
- Define the IMMR to 0xf0000000
- Initialize the memory controller so that RAM is available at
physical address 0x00000000. On the SBC8260 is this 16M (64M)
SDRAM.
- Build the board information structure (see
include/asm-ppc/est8260.h for its definition)
- The compressed Linux kernel (zImage) contains a bootstrap loader
that is position independent; you can load it into any RAM,
ROM or FLASH memory address >= 0x00200000 (above 2 MB).
Note: If zImage is loaded at its link address of 0x00400000 (4 MB),
then zImage will skip the step of moving itself to
its link address.
- Load R3 with the address of the board information structure
- Transfer control to zImage
- The Linux console port is SMC1, and the baud rate is controlled
from the bi_baudrate field of the board information structure.
On thing to keep in mind when picking the baud rate, is that
there is no flow control on the SMC ports. I would stick
with something safe and standard like 19200.
On the EST SBC8260, the SMC1 port is on the COM1 connector of
the board.
EST SBC8260 defaults:
---------------------
0x00000000-0x00FFFFFF 16M (64M) SDRAM
0xFE000000-0xFFFFFFFF 4M flash (SIMM)
0xFC000000-0xFCFFFFFF 2M flash (8 bits wide, soldered to the board)
0x22000000-0x2200FFFF 8K EEPROM
0x04000000-0x04FFFFFF 4M local bus SDRAM (soldered to the board)
0x21000000-0x21000000 Flash present detect (from the flash SIMM)
0x21000001-0x21000001 Switches (read) and LEDs (write)
Notes:
------
- The chip selects can map 32K blocks and up (powers of 2)
- The SDRAM machine can handled up to 128Mbytes per chip select
- Linux uses the 60x bus memory (the SDRAM DIMM) for the
communications buffers.
- BATs can map 128K-256Mbytes each. There are four data BATs and
four instruction BATs. Generally the data and instruction BATs
are mapped the same.
- The IMMR must be set above the kernel virtual memory addresses,
which start at 0xC0000000. Otherwise, the kernel may crash as
soon as you start any threads or processes due to VM collisions
in the kernel or user process space.
Details from Dan Malek <dan_malek@mvista.com> on 10/29/1999:
The user application virtual space consumes the first 2 Gbytes
(0x00000000 to 0x7FFFFFFF). The kernel virtual text starts at
0xC0000000, with data following. There is a "protection hole"
between the end of kernel data and the start of the kernel
dynamically allocated space, but this space is still within
0xCxxxxxxx.
Obviously the kernel can't map any physical addresses 1:1 in
these ranges.
Details from Dan Malek <dan_malek@mvista.com> on 5/19/2000:
During the early kernel initialization, the kernel virtual
memory allocator is not operational. Prior to this KVM
initialization, we choose to map virtual to physical addresses
1:1. That is, the kernel virtual address exactly matches the
physical address on the bus. These mappings are typically done
in arch/ppc/kernel/head.S, or arch/ppc/mm/init.c. Only
absolutely necessary mappings should be done at this time, for
example board control registers or a serial uart. Normal device
driver initialization should map resources later when necessary.
Although platform dependent, and certainly the case for embedded
8xx, traditionally memory is mapped at physical address zero,
and I/O devices above phsical address 0x80000000. The lowest
and highest (above 0xf0000000) I/O addresses are traditionally
used for devices or registers we need to map during kernel
initialization and prior to KVM operation. For this reason,
and since it followed prior PowerPC platform examples, I chose
to map the embedded 8xx kernel to the 0xc0000000 virtual address.
This way, we can enable the MMU to map the kernel for proper
operation, and still map a few windows before the KVM is operational.
On some systems, you could possibly run the kernel at the
0x80000000 or any other virtual address. It just depends upon
mapping that must be done prior to KVM operational. You can never
map devices or kernel spaces that overlap with the user virtual
space. This is why default IMMR mapping used by most BDM tools
won't work. They put the IMMR at something like 0x10000000 or
0x02000000 for example. You simply can't map these addresses early
in the kernel, and continue proper system operation.
The embedded 8xx/82xx kernel is mature enough that all you should
need to do is map the IMMR someplace at or above 0xf0000000 and it
should boot far enough to get serial console messages and KGDB
connected on any platform. There are lots of other subtle memory
management design features that you simply don't need to worry
about. If you are changing functions related to MMU initialization,
you are likely breaking things that are known to work and are
heading down a path of disaster and frustration. Your changes
should be to make the flexibility of the processor fit Linux,
not force arbitrary and non-workable memory mappings into Linux.
- You don't want to change KERNELLOAD or KERNELBASE, otherwise the
virtual memory and MMU code will get confused.
arch/ppc/Makefile:KERNELLOAD = 0xc0000000
include/asm-ppc/page.h:#define PAGE_OFFSET 0xc0000000
include/asm-ppc/page.h:#define KERNELBASE PAGE_OFFSET
- RAM is at physical address 0x00000000, and gets mapped to
virtual address 0xC0000000 for the kernel.
Physical addresses used by the Linux kernel:
--------------------------------------------
0x00000000-0x3FFFFFFF 1GB reserved for RAM
0xF0000000-0xF001FFFF 128K IMMR 64K used for dual port memory,
64K for 8260 registers
Logical addresses used by the Linux kernel:
-------------------------------------------
0xF0000000-0xFFFFFFFF 256M BAT0 (IMMR: dual port RAM, registers)
0xE0000000-0xEFFFFFFF 256M BAT1 (I/O space for custom boards)
0xC0000000-0xCFFFFFFF 256M BAT2 (RAM)
0xD0000000-0xDFFFFFFF 256M BAT3 (if RAM > 256MByte)
EST SBC8260 Linux mapping:
--------------------------
DBAT0, IBAT0, cache inhibited:
Chip
Memory Sel Use
--------------------- --- ---------------------------------
0xF0000000-0xF001FFFF n/a IMMR: dual port RAM, registers
DBAT1, IBAT1, cache inhibited:
------------------\\----------------------\\----------------------------
Jon Diekema | | Smiths Industries
(616) 241-8310 | | 3290 Patterson Avenue, SE
diekema_jon@si.com \\ \\ Grand Rapids, MI 49512-1991
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: EST SBC8260 Linux memory mapping rules 2000-05-20 0:54 EST SBC8260 Linux memory mapping rules diekema_jon @ 2000-05-20 1:34 ` Dan Malek 2000-05-20 2:49 ` diekema_jon 0 siblings, 1 reply; 8+ messages in thread From: Dan Malek @ 2000-05-20 1:34 UTC (permalink / raw) To: diekema_jon; +Cc: linuxppc-embedded diekema_jon wrote: > - The compressed Linux kernel (zImage) contains a bootstrap loader > that is position independent; you can load it into any RAM, > ROM or FLASH memory address >= 0x00200000 (above 2 MB). > > Note: If zImage is loaded at its link address of 0x00400000 (4 MB), > then zImage will skip the step of moving itself to > its link address. The zImage should be loaded above the link address by at least the amount of memory required by the uncompress/setup functions. If you load it below the address, it could potentially relocate itself on top of the kernel or ram disk image. For example, the uncompress/setup functions are linked to run at 0x00400000, based upon the current size of the functions, you need to load above 0x00407000. I would pick 0x00480000 or higher, just to not worry about it. > and I/O devices above phsical address 0x80000000. The lowest You could fix this typo....it should be 'physical'. -- Dan ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EST SBC8260 Linux memory mapping rules 2000-05-20 1:34 ` Dan Malek @ 2000-05-20 2:49 ` diekema_jon 2000-05-20 4:47 ` Dan Malek 0 siblings, 1 reply; 8+ messages in thread From: diekema_jon @ 2000-05-20 2:49 UTC (permalink / raw) To: Dan Malek, linuxppc-embedded >From Dan Malek: > The zImage should be loaded above the link address by at least the > amount of memory required by the uncompress/setup functions. If you > load it below the address, it could potentially relocate itself on > top of the kernel or ram disk image. For example, the uncompress/setup > functions are linked to run at 0x00400000, based upon the current size > of the functions, you need to load above 0x00407000. I would pick > 0x00480000 or higher, just to not worry about it. I have loaded the zImage bits at the link address on the SBC8260, and that works just fine. On the TQM 860T board, I have sucessfully loaded and booted Linux 2.2.13 from a Srecord version of zImage with the ELF header (first 64k) stripped out at 0x00200000 (2 MB). ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: EST SBC8260 Linux memory mapping rules 2000-05-20 2:49 ` diekema_jon @ 2000-05-20 4:47 ` Dan Malek 2000-05-22 16:43 ` Wait Queue bug triggered on EST SBC8260 diekema_jon 0 siblings, 1 reply; 8+ messages in thread From: Dan Malek @ 2000-05-20 4:47 UTC (permalink / raw) To: diekema_jon; +Cc: Dan Malek, linuxppc-embedded diekema_jon wrote: > I have loaded the zImage bits at the link address on the SBC8260, > and that works just fine. Well, you must have some pretty damn magical tools, because that certainly will not work based upon the way the code is written. What do consider the "link address" and "works"? -- Dan ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Wait Queue bug triggered on EST SBC8260 2000-05-20 4:47 ` Dan Malek @ 2000-05-22 16:43 ` diekema_jon 2000-05-24 20:14 ` diekema_jon 0 siblings, 1 reply; 8+ messages in thread From: diekema_jon @ 2000-05-22 16:43 UTC (permalink / raw) To: Dan Malek, linuxppc-embedded; +Cc: all >From Dan Malek: May 20, 00 12:47:56 AM -0400 Re: EST SBC8260 Linux memory mapping rules > diekema_jon wrote: > > I have loaded the zImage bits at the link address on the SBC8260, > > and that works just fine. > Well, you must have some pretty damn magical tools, because that > certainly will not work based upon the way the code is written. > What do consider the "link address" and "works"? The works definition would be able to run /bin/sash. zvmlinux is being linked at 0x00400000, and its entry point is also at this same address. dell 121} powerpc-linux-nm arch/ppc/mbxboot/zvmlinux | grep ' start$' 00400000 T start dell 108} powerpc-linux-objdump -h arch/ppc/mbxboot/zvmlinux arch/ppc/mbxboot/zvmlinux: file format elf32-powerpc Sections: Idx Name Size VMA LMA File off Algn 0 .text 000044d4 00400000 00400000 00010000 2**2 CONTENTS, ALLOC, LOAD, READONLY, CODE 1 .rodata 00000470 004044e0 004044e0 000144e0 2**4 CONTENTS, ALLOC, LOAD, READONLY, DATA 2 .data 0000030c 00405000 00405000 00015000 2**2 CONTENTS, ALLOC, LOAD, DATA 3 .data.init 00000000 00406000 00406000 0008ce71 2**0 CONTENTS 4 .bss 00005270 00406000 00406000 00016000 2**2 ALLOC 5 .gzimage 00071c01 0040b270 0040b270 0001b270 2**0 CONTENTS, ALLOC, LOAD, READONLY, DATA We are using the vxWorks boot rom on the EST SBC8260 board, and it understandsa ELF files. This boot rom is loading zvmlinux at the address is was linked at. Here is an example: VxWorks System Boot Copyright 1984-1998 Wind River Systems, Inc. CPU: EST Corp. est8260 -- MPC8260 PowerQUICC II SBC Version: 5.4 BSP version: 1.2/3 Creation date: Apr 19 2000, 10:24:59 Press any key to stop auto-boot... Attached TCP/IP interface to motfcc0. Subnet Mask: 0xff000000 Attaching network interface lo0... done. Loading... 45680 + 465921 Starting at 0x400000... loaded at: 00400000 0040B270 board data at: 00FFFFC0 00FFFFE4 relocated to: 00200100 00200124 zimage at: 0040B270 0047CE71 avail ram: 0047D000 01000000 Linux/PPC load: root=/dev/nfs rw nfsroot=126.28.1.117:/target nfsaddrs=126.1.4.5:126.28.1.117::255.0.0.0 Uncompressing Linux...done. Now booting the kernel Total memory = 16MB; using 0kB for hash table (at 00000000) Linux version 2.3.99-pre9 (diekema@dell) (gcc version 2.95.2 19991024 (release)) #45 Sat May 20 21:08:00 EDT 2000 Boot arguments: root=/dev/nfs rw nfsroot=126.28.1.117:/target nfsaddrs=126.1.4.5:126.28.1.117::255.0.0.0 On node 0 totalpages: 4096 zone(0): 4096 pages. zone(1): 0 pages. zone(2): 0 pages. Calibrating delay loop... 164.66 BogoMIPS Memory: 14736k available (860k kernel code, 416k data, 48k init) [c0000000,c1000000] Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 4096 (order: 2, 16384 bytes) kmem_create: Poisoning requested, but con given - bdev_cache Inode-cache hash table entries: 1024 (order: 1, 8192 bytes) kmem_create: Poisoning requested, but con given - inode_cache POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.3 Based upon Swansea University Computer Society NET3.039 kmem_create: Poisoning requested, but con given - skbuff_head_cache NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 1024 bind 1024) Starting kswapd v1.6 CPM UART driver version 0.01 ttyS00 at 0x0000 is a SMC ttyS01 at 0x0040 is a SMC ttyS02 at 0x8100 is a SCC ttyS03 at 0x8200 is a SCC pty: 256 Unix98 ptys configured RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: registered device at major 7 loop: enabling 8 loop devices eth0: SCC ENET Version 0.1, 00:a0:1e:01:04:05 kmem_create: Forcing size word alignment - nfs_fh Looking up port of RPC 100003/2 on 126.28.1.117 Looking up port of RPC 100005/2 on 126.28.1.117 VFS: Mounted root (nfs filesystem). Freeing unused kernel memory: 48k init bad magic 0 (should be c01fb2e0, creator 0), wq bug, forcing oops. kernel BUG at sched.c:656! NIP: C000FB5C XER: 00000000 LR: C000FB5C REGS: c01adc00 TRAP: 0700 MSR: 00081032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 TASK = c01ac000[1] 'init' Last syscall: 6 last math 00000000 last altivec 00000000 GPR00: C000FB5C C01ADCB0 C01AC000 0000001B 00001032 C010EF80 C01FB260 C0128502 GPR08: 0000001B C0110000 F00000B8 C01ADBF0 24444028 1001EEB4 00000000 00000000 GPR16: 00000000 00000000 00000000 00000000 00009032 C01DA060 00000000 00000000 GPR24: 00000021 00000001 C01DA060 C010A3E0 C0125000 C0110000 C01FB2D4 C01ADCB0 Call backtrace: C000FB5C C008CB8C C007F560 C007FE8C C0033CE4 C0033D80 C0032818 C00328CC C00328FC C00048F0 10005548 10005A20 0FF09E78 00000000 Kernel panic: Exception in kernel pc c000fb5c signal 4 Rebooting in 180 seconds.. The root partition gets mounted via NFS, but we die with a scheduling related problem. dell 138} ./backtrace < z 0xc000fb5c -- 0xc000fad4 + 0x0088 __wake_up 0xc008cb8c -- 0xc008c8bc + 0x02d0 rs_8xx_close 0xc007f560 -- 0xc007f30c + 0x0254 release_dev 0xc007fe8c -- 0xc007fe78 + 0x0014 tty_release 0xc0033ce4 -- 0xc0033c9c + 0x0048 __fput 0xc0033d80 -- 0xc0033d60 + 0x0020 _fput 0xc0032818 -- 0xc0032784 + 0x0094 filp_close 0xc00328cc -- 0xc0032830 + 0x009c do_close 0xc00328fc -- 0xc00328e8 + 0x0014 sys_close 0xc00048f0 -- 0xc00048f0 + 0x0000 ret_from_syscall_1 0x10005548 -- 0xc0125d84 + 0x4fedf7c4 packet_proto_init 0x10005a20 -- 0xc0125d84 + 0x4fedfc9c packet_proto_init 0x0ff09e78 -- 0xc0125d84 + 0x4fde40f4 packet_proto_init 0x00000000 -- 0xc0125d84 + 0x3feda27c packet_proto_init dell 106} search '*.[hcsS]' | xargs grep 'wq bug' ./include/linux/wait.h: printk("wq bug, forcing oops.\n"); \ "wq bug" is used in the WQ_BUG macro #define WQ_BUG() do { \ printk("wq bug, forcing oops.\n"); \ BUG(); \ } while (0) The WQ_BUG is used int the CHECK_MAGIC_WQHEAD macro. #define CHECK_MAGIC_WQHEAD(x) do { \ if (x->__magic != (long)&(x->__magic)) { \ printk("bad magic %lx (should be %lx, creator %lx), ", \ x->__magic, (long)&(x->__magic), x->__creator); \ WQ_BUG(); \ } \ } while (0) >From kernel/sched.c: static inline void __wake_up_common(wait_queue_head_t *q, unsigned int mode, con st int sync) { struct list_head *tmp, *head; struct task_struct *p; unsigned long flags; if (!q) goto out; wq_write_lock_irqsave(&q->lock, flags); #if WAITQUEUE_DEBUG CHECK_MAGIC_WQHEAD(q); <<<<<<<<<<<<<<<-- Magic numbers are wrong!!! #endif head = &q->task_list; #if WAITQUEUE_DEBUG if (!head->next || !head->prev) WQ_BUG(); #endif list_for_each(tmp, head) { unsigned int state; wait_queue_t *curr = list_entry(tmp, wait_queue_t, task_list); #if WAITQUEUE_DEBUG CHECK_MAGIC(curr->__magic); #endif p = curr->task; state = p->state; if (state & (mode & ~TASK_EXCLUSIVE)) { #if WAITQUEUE_DEBUG curr->__waker = (long)__builtin_return_address(0); #endif if (sync) wake_up_process_synchronous(p); else wake_up_process(p); if (state & mode & TASK_EXCLUSIVE) break; } } wq_write_unlock_irqrestore(&q->lock, flags); out: return; } The last message before we die is "Freeing unused kernel memory: 48k init". This is generated from the free_initmem() routine in arch/ppc/mm/init.c. free_initmem() gets call from init() in init/main.c. static int init(void * unused) { lock_kernel(); do_basic_setup(); /* * Ok, we have completed the initial bootup, and * we're essentially up and running. Get rid of the * initmem segments and start the user-mode stuff.. */ free_initmem(); <<<<<<<<<<<<<<<-- We go this far w/o probems unlock_kernel(); if (open("/dev/console", O_RDWR, 0) < 0) printk("Warning: unable to open an initial console.\n"); (void) dup(0); (void) dup(0); /* * We try each of these until one succeeds. * * The Bourne shell can be used instead of init if we are * trying to recover a really broken machine. */ if (execute_command) execve(execute_command,argv_init,envp_init); execve("/sbin/init",argv_init,envp_init); execve("/etc/init",argv_init,envp_init); execve("/bin/init",argv_init,envp_init); execve("/bin/sh",argv_init,envp_init); panic("No init found. Try passing init= option to kernel."); } Does anybody have any hints on how I might try to debug this problem? Options that I have thought about: - Boot sash instead of init Ok, I have modifified the boot params to include init=/bin/sash. I am able to run /bin/sash, but init is giving me grief. Note: The root file system is from the MontaVista Hard Hat Linux version 1.1. ./ppc_8xx/RPMS/hhl-ppc_8xx-sysvinit-2.77-6.noarch.rpm Attached TCP/IP interface to motfcc0. Subnet Mask: 0xff000000 Attaching network interface lo0... done. Loading... 45680 + 465921 Starting at 0x400000... loaded at: 00400000 0040B270 board data at: 00FFFFC0 00FFFFE4 relocated to: 00200100 00200124 zimage at: 0040B270 0047CE71 avail ram: 0047D000 01000000 Linux/PPC load: root=/dev/nfs rw nfsroot=126.28.1.117:/target nfsaddrs=126.1.4.5:126.28.1.117::255.0.0.0 init=/bin/sash Uncompressing Linux...done. Now booting the kernel Total memory = 16MB; using 0kB for hash table (at 00000000) Linux version 2.3.99-pre9 (diekema@dell) (gcc version 2.95.2 19991024 (release)) #45 Sat May 20 21:08:00 EDT 2000 Boot arguments: root=/dev/nfs rw nfsroot=126.28.1.117:/target nfsaddrs=126.1.4.5:126.28.1.117::255.0.0.0 init=/bin/sash On node 0 totalpages: 4096 zone(0): 4096 pages. zone(1): 0 pages. zone(2): 0 pages. Calibrating delay loop... 164.66 BogoMIPS Memory: 14736k available (860k kernel code, 416k data, 48k init) [c0000000,c1000000] Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes) Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) Page-cache hash table entries: 4096 (order: 2, 16384 bytes) kmem_create: Poisoning requested, but con given - bdev_cache Inode-cache hash table entries: 1024 (order: 1, 8192 bytes) kmem_create: Poisoning requested, but con given - inode_cache POSIX conformance testing by UNIFIX Linux NET4.0 for Linux 2.3 Based upon Swansea University Computer Society NET3.039 kmem_create: Poisoning requested, but con given - skbuff_head_cache NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. NET4: Linux TCP/IP 1.0 for NET4.0 IP Protocols: ICMP, UDP, TCP IP: routing cache hash table of 512 buckets, 4Kbytes TCP: Hash tables configured (established 1024 bind 1024) Starting kswapd v1.6 CPM UART driver version 0.01 ttyS00 at 0x0000 is a SMC ttyS01 at 0x0040 is a SMC ttyS02 at 0x8100 is a SCC ttyS03 at 0x8200 is a SCC pty: 256 Unix98 ptys configured RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: registered device at major 7 loop: enabling 8 loop devices eth0: SCC ENET Version 0.1, 00:a0:1e:01:04:05 kmem_create: Forcing size word alignment - nfs_fh Looking up port of RPC 100003/2 on 126.28.1.117 Looking up port of RPC 100005/2 on 126.28.1.117 VFS: Mounted root (nfs filesystem). Freeing unused kernel memory: 48k init Stand-alone shell (version 3.4) > /etc/rc* + /sbin/ifconfig lo 127.0.0.1 + + mount /proc + ifconfig -a eth0 Link encap:Ethernet HWaddr 00:A0:1E:01:04:05 inet addr:126.1.4.5 Bcast:126.255.255.255 Mask:255.0.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1227 errors:0 dropped:0 overruns:0 frame:0 TX packets:490 errors:0 dropped:0 overruns:0 carrier:0 collisions:4 txqueuelen:100 Base address:0x8000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:3904 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 + mount -a + mount -o rsize=8192,wsize=8192,rw,remount / ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Wait Queue bug triggered on EST SBC8260 2000-05-22 16:43 ` Wait Queue bug triggered on EST SBC8260 diekema_jon @ 2000-05-24 20:14 ` diekema_jon 2000-05-24 20:24 ` Joe Green 2000-05-24 20:29 ` Joe Green 0 siblings, 2 replies; 8+ messages in thread From: diekema_jon @ 2000-05-24 20:14 UTC (permalink / raw) To: linuxppc-embedded; +Cc: source, all Previous message: http://lists.linuxppc.org/listarcs/linuxppc-embedded/200005/msg00180.html > bad magic 0 (should be c01fb2e0, creator 0), wq bug, forcing oops. > kernel BUG at sched.c:656! > NIP: C000FB5C XER: 00000000 LR: C000FB5C REGS: c01adc00 TRAP: 0700 > MSR: 00081032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 > TASK = c01ac000[1] 'init' Last syscall: 6 > last math 00000000 last altivec 00000000 > GPR00: C000FB5C C01ADCB0 C01AC000 0000001B 00001032 C010EF80 C01FB260 C0128502 > GPR08: 0000001B C0110000 F00000B8 C01ADBF0 24444028 1001EEB4 00000000 00000000 > GPR16: 00000000 00000000 00000000 00000000 00009032 C01DA060 00000000 00000000 > GPR24: 00000021 00000001 C01DA060 C010A3E0 C0125000 C0110000 C01FB2D4 C01ADCB0 > Call backtrace: > C000FB5C C008CB8C C007F560 C007FE8C C0033CE4 C0033D80 C0032818 > C00328CC C00328FC C00048F0 10005548 10005A20 0FF09E78 00000000 > Kernel panic: Exception in kernel pc c000fb5c signal 4 > Rebooting in 180 seconds.. We are walking into a scheduling bug in kernel/sched.c with Linux 2.3.99-pre9. MontaVista has an experimental real-time scheduler that can be installed into Linux 2.2.14. Will this scheduler work with Linux 2.3.99-pre9? If it has a shot at working, I would like to try it. Perhaps I can avoid my problem. >From hhl-kernel-rtsched.patch: REAL TIME SCHEDULER for Linux version 2.2.14 Released under the GNU Public License. This patch contains the real time scheduler developed by MontaVista Software, Inc. It applies cleanly against the Linux kernel version 2.2.14. It adds the kernel configuration option CONFIG_RTSCHED. If CONFIG_RTSCHED=y, the real time scheduler is configured, otherwise the standard scheduler is used. This patch also contains some fixes for the standard scheduler. May 5, 2000: Add real time scheduler option, as well as fixes for the standard scheduler. This updated version fixes a build problem on the PowerPC. CONTACT: <source@mvista.com> ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Wait Queue bug triggered on EST SBC8260 2000-05-24 20:14 ` diekema_jon @ 2000-05-24 20:24 ` Joe Green 2000-05-24 20:29 ` Joe Green 1 sibling, 0 replies; 8+ messages in thread From: Joe Green @ 2000-05-24 20:24 UTC (permalink / raw) To: diekema_jon, linuxppc-embedded; +Cc: all As the patch indicates, we've only really built and tested this for 2.2.14 at this time. We will be porting the scheduler to 2.4 when we add support for that release, but I can't tell you if or when it might be ported to any of the 2.3 versions. The source code is provided, so you can try to port it yourself if you wish. On Wed, 24 May 2000, diekema_jon wrote: > Previous message: > > http://lists.linuxppc.org/listarcs/linuxppc-embedded/200005/msg00180.html > > > bad magic 0 (should be c01fb2e0, creator 0), wq bug, forcing oops. > > kernel BUG at sched.c:656! > > NIP: C000FB5C XER: 00000000 LR: C000FB5C REGS: c01adc00 TRAP: 0700 > > MSR: 00081032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 > > TASK = c01ac000[1] 'init' Last syscall: 6 > > last math 00000000 last altivec 00000000 > > GPR00: C000FB5C C01ADCB0 C01AC000 0000001B 00001032 C010EF80 C01FB260 C0128502 > > GPR08: 0000001B C0110000 F00000B8 C01ADBF0 24444028 1001EEB4 00000000 00000000 > > GPR16: 00000000 00000000 00000000 00000000 00009032 C01DA060 00000000 00000000 > > GPR24: 00000021 00000001 C01DA060 C010A3E0 C0125000 C0110000 C01FB2D4 C01ADCB0 > > Call backtrace: > > C000FB5C C008CB8C C007F560 C007FE8C C0033CE4 C0033D80 C0032818 > > C00328CC C00328FC C00048F0 10005548 10005A20 0FF09E78 00000000 > > Kernel panic: Exception in kernel pc c000fb5c signal 4 > > Rebooting in 180 seconds.. > > We are walking into a scheduling bug in kernel/sched.c with Linux > 2.3.99-pre9. MontaVista has an experimental real-time scheduler that > can be installed into Linux 2.2.14. Will this scheduler work with > Linux 2.3.99-pre9? If it has a shot at working, I would like to try > it. Perhaps I can avoid my problem. > > > From hhl-kernel-rtsched.patch: > > REAL TIME SCHEDULER for Linux version 2.2.14 > > Released under the GNU Public License. > > This patch contains the real time scheduler developed by > MontaVista Software, Inc. It applies cleanly against the > Linux kernel version 2.2.14. It adds the kernel configuration > option CONFIG_RTSCHED. If CONFIG_RTSCHED=y, the real time > scheduler is configured, otherwise the standard scheduler is > used. > > This patch also contains some fixes for the standard scheduler. > > May 5, 2000: > Add real time scheduler option, as well as fixes for the standard scheduler. > This updated version fixes a build problem on the PowerPC. > > CONTACT: <source@mvista.com> -- Joe Green <jgreen@mvista.com> MontaVista Software, Inc. (408) 328-9209 ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Wait Queue bug triggered on EST SBC8260 2000-05-24 20:14 ` diekema_jon 2000-05-24 20:24 ` Joe Green @ 2000-05-24 20:29 ` Joe Green 1 sibling, 0 replies; 8+ messages in thread From: Joe Green @ 2000-05-24 20:29 UTC (permalink / raw) To: diekema_jon, linuxppc-embedded; +Cc: all I should also point out that the real-time scheduler primarily changes the responsiveness of processes and threads that are scheduled with real-time priorities. Non-realtime threads are handled by the standard scheduler algorithm, so if there's a bug in there it may very well still be present with the real-time scheduler, unless it was something we caught in our testing. On Wed, 24 May 2000, diekema_jon wrote: > Previous message: > > http://lists.linuxppc.org/listarcs/linuxppc-embedded/200005/msg00180.html > > > bad magic 0 (should be c01fb2e0, creator 0), wq bug, forcing oops. > > kernel BUG at sched.c:656! > > NIP: C000FB5C XER: 00000000 LR: C000FB5C REGS: c01adc00 TRAP: 0700 > > MSR: 00081032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 > > TASK = c01ac000[1] 'init' Last syscall: 6 > > last math 00000000 last altivec 00000000 > > GPR00: C000FB5C C01ADCB0 C01AC000 0000001B 00001032 C010EF80 C01FB260 C0128502 > > GPR08: 0000001B C0110000 F00000B8 C01ADBF0 24444028 1001EEB4 00000000 00000000 > > GPR16: 00000000 00000000 00000000 00000000 00009032 C01DA060 00000000 00000000 > > GPR24: 00000021 00000001 C01DA060 C010A3E0 C0125000 C0110000 C01FB2D4 C01ADCB0 > > Call backtrace: > > C000FB5C C008CB8C C007F560 C007FE8C C0033CE4 C0033D80 C0032818 > > C00328CC C00328FC C00048F0 10005548 10005A20 0FF09E78 00000000 > > Kernel panic: Exception in kernel pc c000fb5c signal 4 > > Rebooting in 180 seconds.. > > We are walking into a scheduling bug in kernel/sched.c with Linux > 2.3.99-pre9. MontaVista has an experimental real-time scheduler that > can be installed into Linux 2.2.14. Will this scheduler work with > Linux 2.3.99-pre9? If it has a shot at working, I would like to try > it. Perhaps I can avoid my problem. > > > From hhl-kernel-rtsched.patch: > > REAL TIME SCHEDULER for Linux version 2.2.14 > > Released under the GNU Public License. > > This patch contains the real time scheduler developed by > MontaVista Software, Inc. It applies cleanly against the > Linux kernel version 2.2.14. It adds the kernel configuration > option CONFIG_RTSCHED. If CONFIG_RTSCHED=y, the real time > scheduler is configured, otherwise the standard scheduler is > used. > > This patch also contains some fixes for the standard scheduler. > > May 5, 2000: > Add real time scheduler option, as well as fixes for the standard scheduler. > This updated version fixes a build problem on the PowerPC. > > CONTACT: <source@mvista.com> -- Joe Green <jgreen@mvista.com> MontaVista Software, Inc. (408) 328-9209 ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/ ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2000-05-24 20:29 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2000-05-20 0:54 EST SBC8260 Linux memory mapping rules diekema_jon 2000-05-20 1:34 ` Dan Malek 2000-05-20 2:49 ` diekema_jon 2000-05-20 4:47 ` Dan Malek 2000-05-22 16:43 ` Wait Queue bug triggered on EST SBC8260 diekema_jon 2000-05-24 20:14 ` diekema_jon 2000-05-24 20:24 ` Joe Green 2000-05-24 20:29 ` Joe Green
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).