Fwd: Problems using qemu devices from l4re

Maria Soler m.soler at virtualopensystems.com
Mon Jul 7 23:40:22 CEST 2014


Hello again,

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
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(),
      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" },
     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?

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.

Than you very much,
María Soler.




More information about the l4-hackers mailing list