Fwd: Problems using qemu devices from l4re

Adam Lackorzynski adam at os.inf.tu-dresden.de
Tue Jul 8 00:05:36 CEST 2014


Hi,

On Mon Jul 07, 2014 at 23:40:22 +0200, Maria Soler wrote:
> Still the same problem, I cannot make it work. I have activated -v in
> io (you said there are several -v options, where can I find more

-v can be specified multiple times for more verbosity (such as -vvvv).

> information? I couldn't find anything about that so far) and made some
> changes in the cfg and io files. Actually I have created a devs file.
> The current state of these files is:
> 
> app.cfg
> ----------------------------------------------------------------------------------
> -- Include L4 functionality
> require("L4");
> 
> local l     = L4.default_loader;
> local nsshm = l:create_namespace({});
> local prodb  = l:new_channel();
> 
> -- Start io
> 
> l:start(
>   {
>     caps = {
>       input   = prodb:svr(),

Put "prodb = prodb:svr()," here (instead of input).

>       icu     = L4.Env.icu,
>       sigma0  = L4.cast(L4.Proto.Factory,
> L4.Env.sigma0):create(L4.Proto.Sigma0),
>     },
>   }, "rom/io -v rom/app.devs rom/app.io");
> 
> l:start(
>    {
>      caps = {
>                 log = L4.Env.log:m("wrs"),
>                 vbus =  prodb,
>         },
>      log  = { "app", "green" },

Just use one of the 'log' entries here.

>      l4re_dbg = L4.Dbg.Warn,
>    },
>    "rom/app"
> );
> ----------------------------------------------------------------------------------
> 
> app.devs
> ----------------------------------------------------------------------------------
> -- Configure two platform devices to be known to io
> Io.hw_add_devices
> {
>   COMM = Io.Hw.Device
>   {
>     hid = "COMM";
>     Io.Res.irq(63);
>     Io.Res.mmio(0xXXXXXX, 0xYYYYYYY);
>     Io.Res.mmio(0xWWWWW, 0xZZZZZZZZ);
>   }
> }
> -- Io.add_vbus("prodb", Io.Vi.System_bus
> -- {
> --      COMM = wrap(Io.Hw:match("COMM"));
> -- })
> ----------------------------------------------------------------------------------
> 
> and app.io
> ----------------------------------------------------------------------------------
> prodb => new System_bus()
> {
>         COMM => wrap(hw-root.COMM);
> }
> ----------------------------------------------------------------------------------
> 
> The verbosity has not improved much. The output is:
> io      | Dev_factory: register factory for N2Hw6DeviceE
> io      | GTF: register factory for 7Pci_dev
> io      | GTF: register factory for N2Hw12Msi_resourceE
> io      | Dev_factory: register factory for N2Hw11Gpio_deviceE
> io      | Io service
> io      | WARNING: Service registration failed: 'prodb'
> io      | Ready. Waiting for request.
> 
> So the new piece of information is only WARNING: Service registration
> failed: 'prodb' " Checking the code, this comes from
> l4/pkg/io/server/src/main.cc - Add_system_bus, so the check
> registry->register_obj(b, b->name()).is_valid() fails, which means
> that the bus created in the io file is not valid and so it is not
> registered. Is this the reason why the execution gets stalled? Can you
> see what it is that I am doing wrong now and what a possible fix may
> be?

For the register_obj to work, the statement in the lua script must be
there, i.e. the name 'prodb' is important here.
 
> Checking the configuration files l4/conf/examples/arm-rv-lcd.cfg
> l4/conf/examples/arm-rv-lcd.io and l4/pkg/io/config/arm-rv-eb.devs
> there is no relevant difference that I can see with my configuration
> files (other than the use of mag, which I don't know and my
> configuration files being much more simple). I would really appreciate
> any piece of advice.



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