Fiasco-OC.UX, ux_con and the framebuffer examples

Adam Lackorzynski adam at os.inf.tu-dresden.de
Thu Jan 21 23:59:16 CET 2016


On Wed Jan 20, 2016 at 16:40:38 +0100, Paul Boddie wrote:
> On Wednesday 20. January 2016 00.13.58 Adam Lackorzynski wrote:
> > On Mon Jan 18, 2016 at 16:45:58 +0100, Paul Boddie wrote:
> > > 
> > > In that case, I wanted to prevent a package from being automatically
> > > built (the intervm package that seems to be part of the virtualisation
> > > emphasis of that work), and ultimately chose to just delete it from the
> > > pkg directory. Maybe there's a cleaner way of managing this, though.
> > 
> > Cleaner I don't know but touch l4/pkg/name/broken is at least less
> > destructive.
> 
> OK. That's good to know. (Of course, the version control system doesn't forget 
> what was there, anyway.)
> 
> > > > > Anyway, running the above command with all dependencies compiled and
> > > > > with x86- fb (and x86-legacy.devs) files in the path gives an error
> > > > > like this...
> > > > > 
> > > > > Ned: loading file: 'rom/x86-fb.cfg'
> > > > > IO      | Io service
> > > > > IO      | Find root Pointer
> > > > > IO      | ACPI Error: Could not map memory at 0x000E0000 for length
> > > > > 131072 (20121018/tbxfroot-286)
> > > > > IO      | Find root Pointer: 0
> > > > > IO      | Ready. Waiting for request.
> > > > > mag     | Hello from MAG
> > > > > fbdrv   | Trying execution of ``set VBE mode'' using x86emu
> > > > > fbdrv   | L4Re[rm]: unhandled read page fault at 0xfd0 pc=0x1007d49
> > > > > fbdrv   | L4Re: unhandled exception: pc=0x1007d49 (pfa=fd4)
> > > > > fbdrv   | L4Re: Global::l4re_aux->ldr_flags=0
> 
> I still get this. More details below...
> 
> > > > > ...which probably suggests that I really should be using something
> > > > > other than this x86-related stuff. Does anyone have any suggestions,
> > > > > or am I doing something that no-one thought sensible?
> > > > 
> > > > The x86-fb.cfg file is missing some bit for ux here. Please change
> > > > local fbdrv_fb = l:new_channel();
> > > > to
> > > > local fbdrv_fb = L4.Env.vesa;
> > > > 
> > > > I'll fix that accordingly.
> 
> I've changed this.
> 
> > > Again, looking at that MIPS32 port was somewhat informative, since there
> > > appears to be a special mips-fb.cfg file and related definitions, so I
> > > was expecting something like ux-fb.cfg. I guess I don't really have a
> > > sufficient overview of the relationships between the different
> > > components, however.
> > 
> > There's not really a difference between ux and x86. The difference is in
> > the platform, i.e. x86 is running on x86-standard-hardware while ux is
> > running on Linux. But, for the framebuffer this isn't even the real
> > difference because the framebuffer can also already be set up before L4
> > runs, e.g. by GRUB. Or, it isn't which means there needs to be someone
> > doing it, and that's where fb-drv comes into play. However, in the ux
> > case, the framebuffer is already there, so we can just use it by taking
> > L4.Env.vesa instead of launching fb-drv to configure it.
> 
> I think I understand. I've been playing with some bare-metal programs on a 
> MIPS32 platform (hence the interest in that port), and it makes sense that 
> something must first set up the framebuffer and make it available at a certain 
> region of memory. I suppose that once the region is configured, it can be 
> presented to a user space component and nothing privileged ever need bother 
> with it again.
 
Yes, very correct.

> Anyway, after fixing up my Makeconf.boot file to use the necessary paths and 
> options...
> 
> ux: MODULE_SEARCH_PATH += $(L4DIR_ABS)/../kernel/fiasco/mybuild
> ux: MODULE_SEARCH_PATH += $(L4DIR_ABS)/conf/examples
> ux: MODULE_SEARCH_PATH += $(L4DIR_ABS)/pkg/io/io/config
> UX_OPTIONS     = -m 128
> UX_GFX         = 800x600 at 24
> UX_GFX_CMD     = $(L4DIR_ABS)/../kernel/fiasco/mybuild/ux_con
> 
> ...I start UX using the following command:
> 
> make O=mybuild ux E=x86-fb-example MODULES_LIST=conf/examples/x86-fb.list
> 
> Then I get the following log information:

Well, I probably forgot to mention, do not start fb-drv.

> MOE: Starting: rom/ned rom/x86-fb.cfg
> MOE: loading 'rom/ned'
> Ned says: Hi World!
> Ned: loading file: 'rom/x86-fb.cfg'
> IO      | Io service
> IO      | Find root Pointer
> IO      | ACPI Error: Could not map memory at 0x000E0000 for length 131072 
> (20121018/tbxfroot-286)
> IO      | Find root Pointer: 0
> IO      | Ready. Waiting for request.
> fbdrv   | Trying execution of ``set VBE mode'' using x86emu
> fbdrv   | L4Re[rm]: unhandled read page fault at 0xfd0 pc=0x1007d49
> fbdrv   | L4Re: unhandled exception: pc=0x1007d49 (pfa=fd0)
> fbdrv   | L4Re: Global::l4re_aux->ldr_flags=0
> mag     | Hello from MAG
> mag     | mapped frame buffer at 0x400000
> mag     | View::Info:
> mag     |   flags: 0
> mag     |   size:  800x600
> mag     |   pos:   0x0
> mag     |   bytes_per_line: 2400
> mag     |   buffer_offset:  0
> mag     |   RGBA(3):8(16):8(8):8(0):0(0)
> mag     |   memory 0x400000 - 0x800000
> mag     | Plugin: Mag_client service started
> mag     | Plugin: Frame-buffer service started
> mag     | L4INPUT native mode activated
> mag     | L4INPUT:                !!! W A R N I N G !!!
> mag     | L4INPUT:  Please, do not use Fiasco's "-esc" with L4INPUT.
> mag     | L4INPUT:                !!! W A R N I N G !!!
> mag     | /home/paulb/L4/src/l4/pkg/input/lib/src/init.c:110: failed 
> l4input_internal_i8042_init(): -16
> spectrum| x:640 y:480 bit/pixel:24 bytes/line:1920
> spectrum| L4Re[rm]: unhandled write page fault at 0x4e1000 pc=0x10011b0
> spectrum| L4Re: unhandled exception: pc=0x10011b0 (pfa=4e1002)
> spectrum| L4Re: Global::l4re_aux->ldr_flags=0
> 
> It looks like fbdrv fails in some way, and although IO complains about mapping 
> memory, I interpret that as being tangential to this particular situation. On 
> screen, the console is opened, and within it there is something resembling a 
> window, with a light grey horizontal strip across the top of a dark 
> rectangular region.

Ok, if there's something on the screen like this, this sounds like a
mismatch in the graphics config path somewhere, try 800x600 at 16 or
800x600 at 32. For the page-fault I don't know right away, is it gone when
not starting fb-drv? I tried it a few days back and it worked for me.

> Sorry if this is all trivial stuff that I should have figured out myself! And 
> thanks for the guidance so far. :-)

Nah, I'd not call this exactly trivial :)


Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/



More information about the l4-hackers mailing list