diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/kernel/process.c snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/kernel/process.c --- snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/kernel/process.c 2004-02-17 23:52:17.000000000 +1100 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/kernel/process.c 2004-04-01 15:09:50.000000000 +1000 @@ -188,14 +188,15 @@ get_fs() == get_ds() ? "kernel" : "user"); #if defined(CONFIG_CPU_32) { - unsigned int ctrl, transbase, dac; + unsigned int ctrl, transbase, dacr, pid; __asm__ ( " mrc p15, 0, %0, c1, c0\n" " mrc p15, 0, %1, c2, c0\n" " mrc p15, 0, %2, c3, c0\n" - : "=r" (ctrl), "=r" (transbase), "=r" (dac)); - printk("Control: %04X Table: %08X DAC: %08X\n", - ctrl, transbase, dac); + " mrc p15, 0, %3, c13, c0\n" + : "=r" (ctrl), "=r" (transbase), "=r" (dacr), "=r" (pid)); + printk("Control: %04X Table: %08X DACR: %08X PID: %08X\n", + ctrl, transbase, dacr, pid); } #endif } diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/mm/cpd.c snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/mm/cpd.c --- snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/mm/cpd.c 2004-04-01 09:42:57.000000000 +1000 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/mm/cpd.c 2004-04-01 17:49:24.000000000 +1000 @@ -1086,11 +1086,13 @@ { struct vm_area_struct* vma_p; - printk("** dump_vma: mm_p 0x%x **\n", (unsigned int)mm_p); + printk("\nDump of mm_struct *0x%p:\n", mm_p); assert(mm_p); for(vma_p = mm_p->mmap; vma_p; vma_p = vma_p->vm_next) { - dump_vma_single(vma_p); + printk(" vma = %p: %08lx to %08lx, prot %08lx flags %08lx\n", + vma_p, vma_p->vm_start, vma_p->vm_end, + pgprot_val(vma_p->vm_page_prot), vma_p->vm_flags); } } /* dump_vma() */ diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/mm/pid.c snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/mm/pid.c --- snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/arch/arm/mm/pid.c 2004-04-01 09:42:57.000000000 +1000 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/arch/arm/mm/pid.c 2004-04-01 17:49:52.000000000 +1000 @@ -27,6 +27,11 @@ #include + +// [JNZ] Hack for dump_vma function: +extern void dump_vma(struct mm_struct *mm_p); + + /********** * Globals * **********/ @@ -139,6 +144,8 @@ unsigned long vm_flags; struct vm_area_struct* vma_p; + printk("[JNZ] arm_pid_allocate: mm_p = %p, mm_p->map_count = %d\n", + mm_p, mm_p->map_count); //printk("** arm_pid_allocate: mm_p 0x%x vmas %d **\n", mm_p, mm_p->map_count); //dump_vma(mm_p); @@ -167,6 +174,7 @@ } } + printk("[JNZ] Found PID %d to allocate\n", pid_num); //printk("** arm_pid_allocate: about to mmap dummy regions **\n"); /* Map 4KB dummy vma into area between stack and bss. */ @@ -188,6 +196,15 @@ vma_p->vm_private_data = NULL; vma_p->vm_sharing_data = NULL; vma_p->vm_raend = 0; + + printk("[JNZ] arm_pid_allocate: first call to insert_vm_struct();\n"); + printk("[JNZ] mm_p = %p, vma_p = %p\n", mm_p, vma_p); + printk("[JNZ] vma_p->vm_start = %08lx, vma_p->vm_end = %08lx\n", + vma_p->vm_start, vma_p->vm_end); + if (mm_p->map_count > 0) { + printk("[JNZ] arm_pid_allocate: mm_p->map_count = %d; BUG SUSPECTED\n", mm_p->map_count); + dump_vma(mm_p); + } insert_vm_struct(mm_p, vma_p); up_write(&mm_p->mmap_sem); @@ -217,11 +234,16 @@ vma_p->vm_private_data = NULL; vma_p->vm_sharing_data = NULL; vma_p->vm_raend = 0; + + printk("[JNZ] arm_pid_allocate: second call to insert_vm_struct();\n"); + printk("[JNZ] mm_p = %p, vma_p = %p\n", mm_p, vma_p); + printk("[JNZ] vma_p->vm_start = %08lx, vma_p->vm_end = %08lx\n", + vma_p->vm_start, vma_p->vm_end); insert_vm_struct(mm_p, vma_p); up_write(&mm_p->mmap_sem); - mm_p->total_vm += ARMPID_TASK_SIZE >> PAGE_SIZE; + mm_p->total_vm += ARMPID_TASK_SIZE >> PAGE_SIZE; // [JNZ] gcc: warning: right shift count >= width of type //printk("** arm_pid_allocate: Managed second mmap at 0x%x**\n", // PIDNUM_TO_PID(pid_num)); @@ -241,6 +263,8 @@ set_armpid(mm_p->context.pid); } + printk("[JNZ] arm_pid_allocate: pid_num = %08x, get_armpid() = %08x, " + "mm_p = %p\n", pid_num, get_armpid(), mm_p); //printk("** arm_pid_allocate: allocated ARM PID %d to mm_p 0x%x**\n", // PID_TO_PIDNUM(get_armpid()), mm_p); //dump_vma(mm_p); diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/kernel/fork.c snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/kernel/fork.c --- snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/kernel/fork.c 2004-04-01 09:42:57.000000000 +1000 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/kernel/fork.c 2004-04-01 13:47:00.000000000 +1000 @@ -775,8 +775,8 @@ struct task_struct *p; struct completion vfork; - //printk("** fork: current 0x%x mm_p 0x%x **\n", - // current, current->mm); /* awiggins */ + printk("[JNZ] do_fork: current = %p, current->mm = %p\n", + current, current->mm); if ((clone_flags & (CLONE_NEWNS|CLONE_FS)) == (CLONE_NEWNS|CLONE_FS)) return -EINVAL; @@ -959,6 +959,9 @@ wait_for_completion(&vfork); fork_out: + printk("[JNZ] do_fork: retval = %d, p->comm[] = %s\n", retval, + p->comm); // Technically, p->comm is char[16], not + // guaranteed to be NUL-terminated. return retval; bad_fork_cleanup_namespace: Binary files snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/linux and snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/linux differ diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/mm/mmap.c snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/mm/mmap.c --- snapgear-3.1.0-ixdp-fass0/snapgear/linux-2.4.x/mm/mmap.c 2004-04-01 09:42:57.000000000 +1000 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/linux-2.4.x/mm/mmap.c 2004-04-01 16:55:06.000000000 +1000 @@ -20,6 +20,9 @@ #include #include +// [JNZ] Extremely temporary function call to dump_vma(): #include +//#include + /* * WARNING: the debugging will use recursive algorithms so never enable this * unless you know what you are doing. @@ -1214,7 +1217,14 @@ __vma = find_vma_prepare(mm, vma->vm_start, &prev, &rb_link, &rb_parent); if (__vma && __vma->vm_start < vma->vm_end) + { +// dump_vma(mm); // [JNZ] Very temporary! + printk("\n[JNZ] insert_vm_struct: __vma = %p, __vma->vm_start " + "= %p, vma->vm_end = %p, call from %p\n", + __vma, __vma->vm_start, vma->vm_end, + __builtin_return_address(0)); BUG(); + } vma_link(mm, vma, prev, rb_link, rb_parent); validate_mm(mm); } diff -ruN -X /data/zaitseff/work/nicta/fass-arm-linux/other/dontdiff snapgear-3.1.0-ixdp-fass0/snapgear/vendors/Intel/IXDP425/config.linux-2.4.x snapgear-3.1.0-ixdp-fass0-debug/snapgear/vendors/Intel/IXDP425/config.linux-2.4.x --- snapgear-3.1.0-ixdp-fass0/snapgear/vendors/Intel/IXDP425/config.linux-2.4.x 2004-03-29 19:02:48.000000000 +1000 +++ snapgear-3.1.0-ixdp-fass0-debug/snapgear/vendors/Intel/IXDP425/config.linux-2.4.x 2004-04-01 10:59:20.000000000 +1000 @@ -862,16 +862,16 @@ # Kernel hacking # CONFIG_FRAME_POINTER=y -# CONFIG_DEBUG_USER is not set -# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_USER=y +CONFIG_DEBUG_INFO=y # CONFIG_NO_PGT_CACHE is not set CONFIG_DEBUG_KERNEL=y # CONFIG_DEBUG_SLAB is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_DEBUG_SPINLOCK is not set # CONFIG_DEBUG_WAITQ is not set -# CONFIG_DEBUG_BUGVERBOSE is not set -# CONFIG_DEBUG_ERRORS is not set +CONFIG_DEBUG_BUGVERBOSE=y +CONFIG_DEBUG_ERRORS=y CONFIG_DEBUG_LL=y # CONFIG_DEBUG_DC21285_PORT is not set # CONFIG_DEBUG_CLPS711X_UART2 is not set