Problems with l4linux
_valerius at mail.ru
Sun Nov 2 19:48:45 CET 2008
> > 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
l4lx | [F.1] semaphore/lib/src/semaphore.c:339:l4semaphore_thread():
l4lx | Error: L4semaphore: ignored request from other task (1B.00, I'm
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.
More information about the l4-hackers