On Mon, 17 Jul 2006, Bob Breuer wrote: > Ray, > > I think I've found the core problem with the prom properties, and a > potential problem with the zilog initialization. Could you try the > attached patch and let me know if it works for you? > > Thanks, > Bob Your patch caused kobject_add to succeed on all duplicate prom items during the initial tree traversal (55 duplicate or dependent items). Thank You :) I am not able to check the serial port portion yet, mine blows up on the sbus initialization. Since it's probably related I have attached the ksymoops output sbus0 suceeds along with it's 3 dma channels. prom item: /io-unit@f,e0200000/sbi@0,0 sbus1 dies prom item: /io-unit@f,e1200000/sbi@0,0 (this is sun4d so "sbi" == sbus) kobject_add failed for sbi@0,0 with -EEXIST, don't try to register things with the same name in the same directory. This is followed by the oops which I believe provides more accurate address info then the trace following the message. It's probably a sun4d thing, I'll dig. Thanx Ray
ksymoops 2.4.1 on sparc 2.4.32. Options used -v /sparc.d2/sparc-2.6/arch/sparc/boot/image (specified) -K (specified) -L (specified) -O (specified) -M (specified) Reading Oops report from the terminal Unable to handle kernel NULL pointer dereference tsk->{mm,active_mm}->context = ffffffff tsk->{mm,active_mm}->pgd = fc000000 swapper(1): Oops [#1] PSR: 408000c1 PC: f00bc8ec NPC: f00bc8f0 Y: 03800000 Not tainted Using defaults from ksymoops -t elf32-sparc -a sparc PC: <create_dir+0xc/0x21c> Caller[f00bcb58]: sysfs_create_dir+0x38/0xa0 Caller[f01041f0]: create_dir+0x24/0x60 Caller[f0104438]: kobject_add+0x5c/0x14c Caller[f013588c]: device_add+0x84/0x2f8 Caller[f0020688]: of_device_register+0x28/0x80 Caller[f0258b48]: sunzilog_register_serio+0x30/0xc8 Caller[f0259028]: topology_remove_dev+0x4/0x1c Caller[f0259110]: sparc_lance_probe_one+0x34/0x4e0 Caller[f0242224]: _etext+0x63490/0x64264 Caller[f0014104]: init+0x60/0x19c Caller[f00195bc]: kernel_thread+0x3c/0x50 Caller[f001401c]: rest_init+0x18/0x34 Caller[f02421b4]: _etext+0x63420/0x64264 Caller[f02417c8]: _etext+0x62a34/0x64264 Caller[00000000]: 0x8 Instruction DUMP: 81c3e008 90102000 9de3bf98 <d006600c> a0100018 40048659 90022074 40014624 9010001a >>PC; f00bc8ec <create_dir+4/21c> <===== Trace; f00bcb58 <sysfs_create_dir+30/a0> Trace; f01041f0 <create_dir+1c/60> Trace; f0104438 <kobject_add+54/14c> Trace; f013588c <device_add+7c/2f8> Trace; f0020688 <of_device_register+20/80> Trace; f0258b48 <fill_sbus_device+114/140> Trace; f0259028 <build_one_sbus+1a8/204> Trace; f0259110 <sbus_init+8c/d0> Trace; f0242224 <do_initcalls+48/168> Trace; f0014104 <init+58/19c> Trace; f00195bc <kernel_thread+34/50> Trace; f001401c <rest_init+10/34> Trace; f02421b4 <start_kernel+230/244> Trace; f02417c8 <sun4c_continue_boot+324/334> Trace; 00000000 Before first symbol Code; f00bc8e0 <init_symlink+c/14> 00000000 <_PC>: Code; f00bc8e0 <init_symlink+c/14> 0: 81 c3 e0 08 retl Code; f00bc8e4 <init_symlink+10/14> 4: 90 10 20 00 clr %o0 Code; f00bc8e8 <create_dir+0/21c> 8: 9d e3 bf 98 save %sp, -104, %sp Code; f00bc8ec <create_dir+4/21c> <===== c: d0 06 60 0c ld [ %i1 + 0xc ], %o0 <===== Code; f00bc8f0 <create_dir+8/21c> 10: a0 10 00 18 mov %i0, %l0 Code; f00bc8f4 <create_dir+c/21c> 14: 40 04 86 59 call 121978 <_PC+0x121978> Code; f00bc8f8 <create_dir+10/21c> 18: 90 02 20 74 add %o0, 0x74, %o0 Code; f00bc8fc <create_dir+14/21c> 1c: 40 01 46 24 call 518ac <_PC+0x518ac> Code; f00bc900 <create_dir+18/21c> 20: 90 10 00 1a mov %i2, %o0