質問

I have an objdump of the crashing method. I found that the crash is due to a bad memory access. The memory address is present in the MIPS register a0. Is there a way to track on how the register got this address other than backtracking (walkthrough) the objdump step by step(a0 got it from s3 and so on).

And I have one more question.

How is paging done in kernel. There must be no concept of Virtual Address in Kernel since all of them are already in memory. This question I got since in my crash there is something called BADVA(is it BAD Virtual Address) holding a bad address.

Here is the crash report

Cpu 0
Registries dump
Status: 10000302    KERNEL EXL 
**Cause : 00803c08    TLBL**
**BadVA : fdca9b68**
PrId  : 01019378
役に立ちましたか?

解決

The proximate cause of the crash is that no TLB entry matches the virtual address in BadVA, and that this happened while the CPU is in exception mode.

The BadVA address (fdca9b68) is in the KSEG2 region of the virtual address space. This region is used for mapped addresses in the MIPS Linux Kernel (typically used for Kernel Modules). I would suspect a bug in a kernel module.

If you want to understand what is going on in a MIPS CPU you should buy and study See MIPS Run.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top