Is L4Linux can use its existed Linux driver to access hardware device?
Matthias Lange
matthias.lange at kernkonzept.com
Wed Sep 14 08:06:29 CEST 2016
Hi,
On 09/09/2016 11:49 AM, Zhe Zhao wrote:
> Hi,
>
> Majorly I'd like to run a Android M with L4Linux on my ODROID-XU4,
> board, but I'm not sure is that possible, seems there is a L4Android
> already, but it is running
> on a qemu with strange two androids run together.
>
> Is there similiar project in your side, and is that a good idea to run
> Android on L4Linux, if I understand it correct, I just need to port
> needed linux driver to L4Linux, and
> build a native google android, then it should work?
Running Android in a virtualized environment is a tough task.
Unfortunately it is not "just" about porting drivers to L4Linux. Device
pass-through is a tricky thing. If you still want to pursue this
endeavour a good start is to build a generic ARM version of Android from
the AOSP. Then take the disk images, create a L4Re configuration and try
to boot the system.
Matthias.
>
> I want to achieve Android together with a subsystem can achieve hard
> real time, instead of using weird VM solutions.
>
>
> Thanks
> Br
> Alex
>
>
> 2016-09-09 14:27 GMT+08:00 Matthias Lange
> <matthias.lange at kernkonzept.com <mailto:matthias.lange at kernkonzept.com>>:
>
> Hi,
>
> On 09/07/2016 09:00 AM, Zhe Zhao wrote:
> > Hi,
> >
> > Thanks for you answers.
> >
> > Does Fiasco use the scheduler that follow the priority? I mean like if
> > there is high priority task, it will always have CPU?
>
> I would like to point you to this recent thread on the mailing list
> which discusses details about L4Re's scheduling [1].
>
> > Does Fiasco already support tickless kernel? or it will use a fixed 1000
> > HZ as the tick?
>
> There is some support for tickless/oneshot mode in the L4Re microkernel
> but it is not tested.
>
> > I'd like to run L4Linux on a Droid-xu4 or raspberry is there any easy
> > start guide for it?
>
> Unfortunately no. But it is not complicated either. You can take the
> L4Linux basic example as a starting point. You need to build the L4Re
> microkernel for the right platform. The userland needs to be compiled
> for the right ARM architecture (Rasperry Pi is ARM6k whereas the Droid
> is ARMv7). Then you create an uImage which you can e.g. boot via tftp.
>
> > When I tried the L4Linux with ramdisk which in the L4Re snapshot, it
> > seems the it just like running a Linux. I don't know if below
> > understanding is correct, if not please correct me
> >
> > The syscall fork "int 80" will be redirect to L4Linux from Fiasco by IPC
> > (how Fiasco knows to redirect int 80 through IPC to L4Linux?), and fork
> > will be executed inside L4Linux, then L4Linux will create Fiasco task?
> > (so here we have two task proc combined to identify one linux process),
> > and L4Linux will create vmspace for the process ? then how the memory
> > space be handled to Fiasco?
>
> L4-like systems have the concept of an exception handler per thread. For
> L4Linux this means that all exceptions triggered by a Linux user process
> are send to the L4Linux kernel.
>
> In the case of fork() the L4Linux kernel eventually creates a new L4
> task (l4_factory_create_task). Memory gets mapped from the L4Linux task
> into the new task e.g. upon pagefaults.
>
> > From the above assumption, it means I can just build a rootfs with
> > native Linux apps, and use IO manager to pass the harddisk/emmc to
> > L4Linux, then I can run whatever apps I like?
>
> Basically yes. On ARM platforms there are some stumbling blocks for sure
> as device pass-through can be tricky at times.
>
> > I'd like to start read codes related to Fiasco, L4Re, any suggestions
> > about the start point?
>
> That's a very generic question and the generic answer for the L4Re
> microkernel is: fiasco/src/kern. Do you have any specific mechanisms in
> mind you want to understand?
>
> Matthias.
>
>
> [1]
> http://os.inf.tu-dresden.de/pipermail/l4-hackers/2016/007907.html
> <http://os.inf.tu-dresden.de/pipermail/l4-hackers/2016/007907.html>
>
> >
> > Br
> > Alex
> >
> >
> > 2016-09-06 23:37 GMT+08:00 Matthias Lange
> > <matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>
> <mailto:matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>>>:
> >
> > Hi,
> >
> > On 09/05/2016 11:36 AM, Zhe Zhao wrote:
> > > Hi,
> > >
> > > Thanks for your answers, I really appreciate it.
> > >
> > > I tried to run L4Linux and L4Re in a qemu environment, is it
> support SMP
> > > already? I found I only have a single core L4Linux running.
> and Fiasco
> > > report only one scheduler instance.
> >
> > Yes, SMP is supported. Have you configured the L4Re
> microkernel with
> > multiprocessing support? Did you start qemu with multiple CPUs? To
> > enable more CPUs in L4Linux you need to pass the
> 'l4x_cpus=<VALUE>'
> > parameter on the cmdline.
> >
> > > And is it possible to direct reuse the L4Linux's driver
> instead of
> > > rewrite them in L4Re? is that IO manager used to mapping all
> needed
> > > device physical address to L4Linux's memory space? Is that
> mean I can map
> > > all device direct to L4Linux through IO manager?
> >
> > Yes, but there might be work involved. First you should make
> yourself
> > familiar with the concepts of Io [0].
> >
> > > Is there any work ongoing to support ARM64 on L4Re and
> L4Linux? It will
> > > be quite interesting consider most of the ARM device are
> moving to be 64
> > > bit arch.
> >
> > We are looking at it but there is nothing to announce publicly
> right now
> >
> > > Do you have some recommend documents for the newbie like me
> to get a
> > > quick start up?
> >
> > The L4Re documentation [1].
> >
> >
> > Matthias.
> >
> > [0] http://l4re.org/doc/io.html
> > [1] http://l4re.org/doc/
> >
> > > Br
> > > Alex
> > >
> > > 2016-09-02 14:24 GMT+08:00 Matthias Lange
> > > <matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>
> > <mailto:matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>>
> > <mailto:matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>
> > <mailto:matthias.lange at kernkonzept.com
> <mailto:matthias.lange at kernkonzept.com>>>>:
> > >
> > > Hi,
> > >
> > > On 08/31/2016 02:35 PM, Zhe Zhao wrote:
> > > > Hi,
> > > >
> > > > After read the basic ideas of L4Linux I have some
> questions
> > related to it.
> > > >
> > > > Is L4Linux run as a paravirtualization VM on L4Re?
> Then the
> > traditional
> > > > Linux Process just still compiled against Linux system and
> > put them
> > > > together with L4Linux disk image?
> > > > so it means L4Re works like qemu and Linuxl?
> > >
> > > No, L4Re does not work like qemu.
> > >
> > > > or L4Re works as a micro kernel operating system, and
> > L4Linux run as a
> > > > process on it, all devices handled to L4Linux to reuse the
> > drivers of
> > > > L4Linux? and the previous Linux process
> > > > compiled with Linux, but run direct on L4Re as L4
> processes
> > which
> > > > communicate with L4Linux through IPC?
> > >
> > > L4Linux is a modified version of the Linux kernel with the
> > hardware
> > > abstraction layer (HAL) implemented using L4Re primitives.
> > Technically
> > > L4Re appears to be "just" another hardware architecture for
> > the Linux
> > > kernel, just like ARM or MIPS.
> > >
> > > L4Linux runs as a user space task on top of the L4Re
> > microkernel and at
> > > the (Linux) kernel ABI is unmodified which allows to run
> > existing Linux
> > > programs. That means, you can compile "normal" Linux
> programs
> > with your
> > > standard tool chain, put the binary onto a ramdisk or disk
> > image and run
> > > it with L4Linux.
> > >
> > > > it is quite confused after read a little of the codes, in
> > L4Linux, seems
> > > > there is some injection of L4 task stuffs inside
> > thread_struct of Linux,
> > > > but also have some vCPU related stuffs,
> > > > can you help me about what is the real behavior of
> L4Linux?
> > >
> > > Each (Linux) process is actually an L4Re task with the
> > exception and
> > > page fault handler set to the L4Linux task. That's why some
> > L4-specific
> > > additions are required to Linux kernel data structures.
> > >
> > > Matthias.
> > >
> > > > I'm sorry to ask this basic questions, but after some
> > digging I feel
> > > > quite confused about how it works.
>
>
--
Matthias Lange, matthias.lange at kernkonzept.com, +49-351-41 888 614
Kernkonzept GmbH. Sitz: Dresden. Amtsgericht Dresden, HRB 31129.
Geschäftsführer: Dr.-Ing. Michael Hohmuth
More information about the l4-hackers
mailing list