bi addr=4054ec b+ bpn=1 br bpn=1 task=f
But after I said "g" in the debugger it didn't stopped at the breakpoint, only broke in TRAP d. What I do incorrectly? Maybe, bi addr=4054ec sets the breakpoint at phys address, not to linear of task f? How then I can set to linear (or convert linear to physical?).
Breakpoint addresses are virtual.
Anyway, I found the reason. L4Linux had so much privileges that it was able able to write MSRs which allowed it to setup the Sysenter-MSRs. Normally this is trapped and handled. The kernel allows writing MSRs for special purpose stuff, this was triggered here. The wrmsr's are in enable_sep_cpu in arch/x86/vdso/vdso32-setup.c, if you comment them out it should work.
Good. Thank you very much, I am very glad to see it now works ;) I commented out that fragment and recompiled. Now Linux starts without problems. But another problem appeared: when I start X, the following message appears in log:
l4lx | [F.1] semaphore/lib/src/semaphore.c:339:l4semaphore_thread(): l4lx | Error: L4semaphore: ignored request from other task (1B.00, I'm F.01 l4lx : )!
Linux stops with black screen. :( The run program shows that application with task Id = 0x1b is Linux application (it says, "owner: f.4"). It seems it is X server. I start X server from a drops-fp.rd ramdisk image from TUD site. The problem seems to be that X server runs as another task and Linux accepts only requests from its threads.
WBR, valery