I don't understand why you don't have console. If you did, you could use the initcall_debug kernel parameter. Aside from that, find __log_buf in System.map, then dump that chunk of memory using qemu's monitor interface. That should at least give you a backtrace from the panic. If it's an initcall indirect function call, the initcall_debug parameter will give you some clues. -Hollis On Wed, Dec 16, 2009 at 5:32 PM, Christoffer Dall <cd2436 at columbia.edu> wrote: > Hi. > > This past week I had to fix a bug in the load/store multiple emulation > code and also introduce support for all access permission checks when > traversing the guest page tables, including the Domain Access Control > settings used on ARM. > > This has gotten me through start_kernel and through the first couple > of context switches between the kernel threads. I eventually end up in > init() -> do_basic_setup() -> do_initcalls(), where the system crashes > on a guest NULL pointer exception. > > Due to the linker magic with init calls, it's hard to reason about > where this bug occurs. (I should say that I strongly expect it to be a > bug, since I am guessing that no logic can be based on a NULL pointer > fault this early in the kernel). I have sent an e-mail (forwarded > below) to the linux-arm mailing list to see if I could get any advice > on getting the UART serial console up at this point. > > Otherwise I think I am left with disassembling the guest kernel and > matching the address for the NULL pointer error, and hopefully it will > be somewhere meaningful and not in some general utility function. > > If anyone has any other input on how to proceed, it will (as always) > be fantastic. > > Best, > Christoffer > > > ---------- Forwarded message ---------- > From: Christoffer Dall <cd2436 at columbia.edu> > Date: Wed, Dec 16, 2009 at 8:25 PM > Subject: Early pl011 console for debugging KVM for ARM port > To: linux-arm-kernel at lists.infradead.org > > > Hi everyone. > > I am working on a port of KVM for arm (http://android.chazy.dk) and I > am somewhat stuck. I encounter a crash somewhere in do_initcalls(), > but I do not have console at this point, as my only console is the > pl011 uart device. Not having the console makes it quite hard to track > down the bugs (an effort I do by placing asm("swi 0xMAGIC") at various > locations) for now. > > Does anyone know how to enable such a console earlier? I tried simply > calling pl011_init() before the initcalls loop, but I eventually hit a > NULL pointer exception inside > list_add_tail(&kobj->entry,&kobj->kset->list); called from > kobject_add(...) in lib/kobject.c. I can gather it's the > kobj->kset->list.prev, which is NULL. > > As far as I understand, these structures should have been initialized > at this point. Can anyone confirm? > > Any help is greatly appreciated! > > > Thanks, > Christoffer Dall > _______________________________________________ > Android-virt mailing list > Android-virt at lists.cs.columbia.edu > https://lists.cs.columbia.edu/cucslists/listinfo/android-virt >