Hi, Adam,
Thank you for your suggestion! Following your guidance, I log the PF info when system dead like this:
test 1: pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 144 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 143 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 142 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 141 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 140 test 2: pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 105 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 104 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 103 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 102 test 3: pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 116 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 115 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 114 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 113 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 112
What is spc? pc or sp ? I objdump the image, and did not found that address. However, we can't get more info in dump file because the file didn't include any symbol table(Can we dump the symbol table by adding some compile option? ). At last, different from other chip, we found that address e0000000-fb000000 in s5pv210 is some important register, and the kernel seem to map that address, it doesn't matter?
Steven Meng
On Tue Feb 26, 2013 at 19:33:49 +0800, meng-qy wrote:
Hello,l4-hackers,
We are working at porting fiasco to s5pv210 platform. Now, we
encounter a unstable problem when fiasco booting. Sometimes, the system seems ok. But more often, the system dead in different places when start moe. We trace the program and find that the system halts in function "handle_page_fault" of sigma0(dir=/l4/pkg/sigma0/server/src/memmap.cc). The log is described more specifically as following:
case 1: Page fault ........ Calibrating timer loop... done. SIGMA0: Hello! KIP @ 20002000 allocated 4KB for maintenance structures SIGMA0: Dump of all resource maps RAM:------------------------ [0:20000000;20000fff] [0:20065000;2008ffff] [0:20097000;20097fff] [0:2009f000;2013ffff] [4:20140000;20171fff] [0:20172000;20177fff] [4:20178000;2018efff] [0:2018f000;21010fff] [4:21011000;21011fff] [0:21012000;210fffff] [4:21100000;21133fff] [0:21134000;3effffff] IOMEM:---------------------- [0:0;1fffffff] [0:40000000;ffffffff] SIGMA0: alloc addr ok, addr is 20140000 //which we add in func handle_page_fault SIGMA0: alloc addr ok, addr is 2017d000 SIGMA0: alloc addr ok, addr is 2017c000 SIGMA0: alloc addr ok, addr is 2016e000 SIGMA0: alloc addr ok, addr is 2016f000 SIGMA0: alloc addr ok, addr is 20169000 SIGMA0: alloc addr ok, addr is 2016c000 SIGMA0: alloc addr ok, addr is 2016b000 MOE: Hello world SIGMA0: Page fault, did not find page at 200020e0 for 4 SIGMA0: Page fault, did not find page at 200020e0 for 4 SIGMA0: Page fault, did not find page at 200020e0 for 4 SIGMA0: Page fault, did not find page at 200020e0 for 4 SIGMA0: Page fault, did not find page at 200020e0 for 4 // endless loop SIGMA0: Page fault, did not find page at 200020e0 for 4
The second case smells like cache/tlb issue but I wouldn't understand why this would be a problem. And the case above looks rather not like that. 20002000 is the kip and there should not be a page-fault there. In jdb, you should log page-faults (P*) to check (with shift-T) for any repeating patterns (e.g. same pc or similar).
Adam
Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
End of l4-hackers Digest, Vol 118, Issue 14
--------------------------------------------------------------------------------------------------- Confidentiality Notice: The information contained in this e-mail and any accompanying attachment(s) is intended only for the use of the intended recipient and may be confidential and/or privileged of Neusoft Corporation, its subsidiaries and/or its affiliates. If any reader of this communication is not the intended recipient, unauthorized use, forwarding, printing, storing, disclosure or copying is strictly prohibited, and may be unlawful.If you have received this communication in error,please immediately notify the sender by return e-mail, and delete the original message and all copies from your system. Thank you. ---------------------------------------------------------------------------------------------------
On Thu Feb 28, 2013 at 21:33:53 +0800, meng-qy wrote:
Thank you for your suggestion! Following your guidance, I log the PF info when system dead like this:
test 1: pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 144 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 143 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 142 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 141 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 140 test 2: pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 105 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 104 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 103 pf: 000a pfa=20144128 ip=20144128 (r-) spc=0xf12e475c 102 test 3: pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 116 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 115 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 114 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 113 pf: 000a pfa=2016a8f8 ip=2016a8f8 (r-) spc=0xf12e475c 112
What is spc? pc or sp ? I objdump the image, and did not found that address.
pc is the program counter, sp is the stack pointer, spc is a kernel internal data structure (Space). So this is a code pagefault, likely in the roottask/moe.
However, we can't get more info in dump file because the file didn't include any symbol table(Can we dump the symbol table by adding some compile option? ).
Use fiasco.image file for the kernel.
At last, different from other chip, we found that address e0000000-fb000000 in s5pv210 is some important register, and the kernel seem to map that address, it doesn't matter?
What you describe are physical addresses, the kernel uses virtual ones, i.e. the virtual address does not point to the physical address. So yes, it does not matter.
Adam
l4-hackers@os.inf.tu-dresden.de