Initrd and 2.6.33 curious behaviour
Robert Jarzmik
robert.jarzmik at free.fr
Thu May 27 08:00:34 EDT 2010
I have made some progress.
I have traced that :
- after the bootloader has disabled the MMU, disabled the caches, quiesced
the DMAs and masked the interrupts, and just before the final jump to the
kernel first instruction :
=> the first u32 at physical address 0xa0508000 is 1f:8b:08:08
=> this is the correct begining of my initrd.gz
In function setup_arch(), just after paging_init(mdesc), I read the value again
with a "rjk = *((unsigned int *)(phys_to_virt(0xa0508000)));", and it has
changed to 10:00:00:a0.
Now, I would need some help to trace this memory location before
paging_init(). My current understanding is that before paging_init(), the MMU is
set by __create_page_tables(). The mapping doesn't cover the initrd area.
If I was to be able to watch this area, I would need to :
- amend __create_page_tables(), and add a mapping for the 0xa0508000 area (1MB
is enough)
- read the value of the u32 at physical address 0xa0508000 from this mapping
- printk the stored value at the end of setup_arch()
The questions I have are :
- is this the right approach ?
- which virtual address space can I use for my mapping
--
Robert
More information about the linux-arm-kernel
mailing list