At 02:28 PM 2/23/2003, brian.auld at adic.com wrote: >Hello, > >Has anyone successfully applied and run the linux kernel preemption patch on >a 2.4.20 kernel. I have the following: > >- Latest Denx kernel (2_4_devel) running on 440GP ebony >- 'preempt-kernel-rml-2.4.20-1.patch' applied to my kernel source > (I manually corrected a couple of fails and double checked a few > 'successfully applied with fuzz' instances when applying the patch). >- Kernel compiled with 'Kernel preemption =y' in make oldconfig > >When I try to boot this kernel, I get the following error: > ><------- snipped >Kernel command line: root=/dev/nfs rw >nfsroot=172.16.77.152:/opt/eldk/ppc_4xx >ip=172.16.77.155:172.16.77.152::255.255.255.0:EBONY-2::off >kernel BUG at irq.c:575! >Oops: Exception in kernel mode, sig: 4 >NIP: C0002B04 XER: 00000000 LR: C0002B04 SP: C0125F50 REGS: c0125ea0 TRAP: >0700 Not tainted >MSR: 00001030 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11 >TASK = c0124060[0] 'swapper' Last syscall: 0 >last math 00000000 last altivec 00000000 >PLB0: bear= 0x00008000 acr= 0x9b000000 besr= 0x00000000 > >GPR00: C0002B04 C0125F50 C0124060 00000019 00001030 00000001 00000020 >C0170000 >GPR08: 000001D8 00000002 00000000 C0125E70 C012A8A8 71000000 07FE7300 >007FFC73 >GPR16: 00000000 00000001 007FFC00 FFFFFFFF 00001032 C0125F60 00000000 >C00017CC >GPR24: C0002AA0 007FFB90 00000E00 007FFC73 007FFC00 00000000 00000000 >007FFB90 >Call backtrace: >C0002B04 C00017CC C0133504 C0000224 >Kernel panic: Attempted to kill the idle task! >In idle task - not syncing > <0>Rebooting in 180 seconds..
RML patches doesn't support 2_4_devel tree very well (and especially PPC440). If irq.c:575 correspond to preempt_intercept function in your tree, it should look like: #ifdef CONFIG_PREEMPT int preempt_intercept(struct pt_regs *regs) { int ret; preempt_disable(); switch(regs->trap) { case 0x500: ret = do_IRQ(regs); break; #if !defined(CONFIG_4xx) || defined(CONFIG_440) case 0x900: #else case 0x1000: #endif ret = timer_interrupt(regs); break; default: BUG(); } preempt_enable_no_resched(); return ret; } #endif /* CONFIG_PREEMPT */ Please, note additional "defined(CONFIG_440)" Eugene ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/