Hi,
On Thu, Jul 30, 2009 at 06:14:03PM +0200, Frank Kaiser wrote:
As a preparation of a certain task I want to check the PCI resources of my platform (IVI platform with Intel ATOM). For this purpose I built Genode-on-OKL4, only consisting of a minimum driver set and the test-pci application. Running this image in qemu looks good, but on the IVI platform the init process fails with a page fault before or when starting the PCI driver which is the first entry in the config file. The error message is:
no RM attachment (READ pf_addr=6000 pf_ip=2001286 from 01)
I have no clue what this message is trying to tell me.
The message indicates a potential bug with undefined pointers, i.e. init did not attach a dataspace at this virtual address.
The given IP points to the function Genode::strncpy(). I also wonder why the system wants to read from virtual address 0x6000, because all modules are allocated beginning at virtual address 0x02000000.
On Genode the core service RM (region manager) manages address spaces of processes. When init creates and attaches a new RAM dataspace to its virtual address space, a unused region fitting the dataspace is looked up by RM.
Checking init's pagetable with OKL4's KDB on qemu shows a number of allocations below:
00000000 [00140027]: tree=f0140000
[...]
00066000 [00370067]: phys=00370000 pg=f0140198 4KB rwx (RWX) user WB
Looks good and common for me ;-)
On the IVI platform this area at the time of the page fault looks:
00000000 [00141027]: tree=f0141000
00001000 [001f5067]: phys=001f5000 pg=f0141004 4KB rwx (RWX) user WB
00005000 [001df025]: phys=001df000 pg=f0141014 4KB r~x (R~X) user WB
I'd like to get some hints where to look into the code for finding the cause of the problem. Since I cannot debug the platform, I probably have to add more trace messages to get additonal information about what is going on.
I have no idea what happened, but files you should have a look at are:
base-okl4/src/core/rm_session_support.cc (set verbose_unmap) base/src/core/rm_session_component.cc (set verbose and verbose_page_faults)
Good luck