Re: vbox4_ubuntu_16_04_64.run recipe

2017-10-16 Thread Christian Helmuth
Hey Chris,

additionally to Alexander guide I'd like to add that Virtual Disk
Image (VDI) files carry a UUID for identification that is also
specified in the .vbox file. So please make sure that the UUIDs of the
VDIs match those in the configuration files. For
vm_ubuntu_16_04_64.vbox

  

  

  

You may retrieve the UUID of an VDI via

  vboxmanage showhdinfo  | grep ^UUID

on any Linux machine.

Greets
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main


Re: Provide session from libc code

2017-10-16 Thread Christian Helmuth
Hello Johannes,

On Mon, Oct 16, 2017 at 01:42:04PM +0200, Johannes Kliemann wrote:
> I tried to create a provide an input session from a libc (in this case
> an Qt application). If I just run it from the Main struct it will
> correctly announce the session but since Main never returns, no client
> will be able to use it.
> I tried to circumvent this by putting the application into a separate
> thread but this led to the following error:
> 
> > Error: void Libc::Kernel::run(Libc::Application_code&) called from 
> > non-kernel context
> 
> Running this Qt application without wrapping it into with_libc makes it
> segfault on initialization.
> 
> What is the correct way to do this? My current main is at [1].

Unfortunately, there is no "correct" way of implementing tasks like
the described currently. I must admit that with_libc() is the most
confusing function in Genode currently and we therefore will remove it
from the API soon. In fact, I myself did not expect that with_libc()
is needed in your context but there may be dependencies unknown to me.

I'd suggest a careful look into libports/src/app/avplay which provides
an input session too. The approach there is to create a second Genode
entrypoint for the input service and execute Qt code in the component
thread. I strongly encourage you not just to copy the avplay code as
it uses the older, low-level Rpc_entrypoint but use
Genode::Entrypoint.

Greets
-- 
Christian Helmuth
Genode Labs

https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · /ˈdʒiː.nəʊd/

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main


Re: Base-hw kernel GIC issue with a Cortex--A7 processor.

2017-10-16 Thread Bob Stewart

Thanks for the reply, Martin. Comments in-line:


On 10/12/2017 07:12 AM, Martin Stein wrote:

Hi Bob,

Am 12.10.2017 um 01:33 schrieb Bob Stewart:

A big oops by me Martin on the register declarations. I had forgotten the 
bitfield format was a position a followed by length type as opposed to start 
and end bit positions.

This is why I wrote you an explanation of the Bitfield interface two emails ago 
:-)


Thanks for defining the steps in start up which I was a bit familiar with 
through reading code. I only had time today to debug the core_mmio translation 
table which had the expected physical addresses based on the initialization 
list for the platform board object. The virtual addresses started at 
0xxF000.
I'll next figure out why a Pic object can be successfully constructed during 
the bootstrap where the physical addresses for the distributor and the cpu 
interface are used in the initialization list but the construction appears to 
fail in kernel init when a singleton version of it is created using virtual 
addresses in the initialization list.

You said that you do not even enter the constructor but are you sure you don't
enter the first initializer in the initializer list or have you only checked
whether you enter the constructor body?
It is dying in the Initializers. It never gets to the body of the 
constructor.


I assume that there are several initializers like the distributer and CPU 
interface
MMIO like in our ARM-GIC implementation:

Hw::Pic::Pic()
:
_distr(Platform::mmio_to_virt(Board::Cpu_mmio::IRQ_CONTROLLER_DISTR_BASE)),
_cpui (Platform::mmio_to_virt(Board::Cpu_mmio::IRQ_CONTROLLER_CPU_BASE)),
_last_iar(Cpu_interface::Iar::Irq_id::bits(spurious_id)),
_max_irq(_distr.max_irq())
{ }
I'm using core/spec/arm_gic (and therefore the Hw::Pic in 
lib/hw/spec/arm as the base class). So the only difference between this 
implementation and the Cortex A9 implementation is what the values are 
for IRQ_CONTROLLER_DISTR_BASE and IRQ_CONTROLLER_CPU_BASE. In kernel's 
init.cc I created a local object for Pic and used that to pass to the 
cpu init method instead of the reference to the unmanaged singleton 
object. When I did that the kernel init completed successfully and the 
log code was executed and completed with the expected results. This 
would indicate that the Pic object is correctly constructed, would it not.

Then, you could print '_base' in the 'Mmio_plain_access' constructor [1] for
debugging. If you truely do not enter the first initializer your problem is most
likely not related to any PIC IO mappings. I would suggest you to aim for the
exact point where your system gets stuck.
For the first initializer, for the distributor object, base() returns 
0x0. This would indicate that a Pic object was not being constructed 
correctly in the placement new operator, which is hard to imagine why. I 
will go over my core make files again to see if I've got an incorrect 
include path specified or specified an incorrect location for a source 
file. Beyond that?


Bob


Cheers,
Martin

[1] base/include/util/mmio.h

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main



--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main


Provide session from libc code

2017-10-16 Thread Johannes Kliemann
Hi,

I tried to create a provide an input session from a libc (in this case
an Qt application). If I just run it from the Main struct it will
correctly announce the session but since Main never returns, no client
will be able to use it.
I tried to circumvent this by putting the application into a separate
thread but this led to the following error:

> Error: void Libc::Kernel::run(Libc::Application_code&) called from non-kernel 
> context

Running this Qt application without wrapping it into with_libc makes it
segfault on initialization.

What is the correct way to do this? My current main is at [1].

Regards,
Johannes

[1]:
https://github.com/jklmnn/componolit/blob/478490f05f23ce4c64b4a386377a1212cb9106ae/src/app/onscreenkeyboard/main.cpp

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main


Re: vbox4_ubuntu_16_04_64.run recipe

2017-10-16 Thread Alexander Boettcher
Hello,

On 13.10.2017 17:01, Chris Rothrock wrote:
> I am trying to get a working virtual machine in Genode with the
> recipe vbox4_ubuntu_16_04_64.run but I am unsure where the virtual disk
> image file (.vdi) should reside so that the VirtualBox module loads it
> properly.  I am able to get a good compile and it seems to boot to Genode
> just fine and I even see the CPU status meter but I don't get the virtual
> machine booting up.  I created a VirtualBox VM with this same name with a
> VDI and completed a full install of Ubuntu 16.04 64 bit and am trying to
> use this image file.  As far as I can tell, the VDI meets all the
> parameters and works fine with using both Linux and Windows VirtualBox to
> run.  Any instructions on getting this (and possibly Windows VMs to work)
> would be greatly appreciated.

the vbox4_* and vbox5* run scripts are specifically setup for our test
machine. The scripts are executed automatically by our tests every day.

If you want to use those run scripts, you have to manually prepare your
test target machine beforehand similar to ours.

All the vbox4_*.run and vbox5_*.run scripts expect that the .vdi image
is placed on the target test machine. In the test machine a AHCI disc is
expected to appear as device 0 with a MBR partition scheme. The 4.
partition must contain a ext2 filesystem (see
repos/ports/run/virtualbox_auto.inc, look for ahci_drv and part_blk).

On the ext2 filesystem the vdi must lie in the root directory, and
additionally a "ram" directory is expected with a empty overlay vdi
image. The overlay image is loaded and kept during run script execution
just in RAM. All writes to the vdi goes to this overlay image instead of
the original Ubuntu image, to make sure that the original vdi file is
not modified.

So, for vbox4_ubuntu_16_04_64.run (using
repos/ports/run/vm_ubuntu_16_04_64.vbox) it looks like:

/ubuntu_16_04_64.vdi
/ram/overlay_ubuntu_16_04_64.vdi

on the target test machine.

For the Windows VMs it is similar, just look into the corresponding
Virtualbox configuration *.vbox files for the vdi image names and add
the files to the filesystem on the target machine beforehand.

Information about creating the overlay images you will find in the
Internet or you may read the beginning of repos/ports/run/vbox_share.inc
for some hints.

Cheers,

-- 
Alexander Boettcher
Genode Labs

http://www.genode-labs.com - http://www.genode.org

Genode Labs GmbH - Amtsgericht Dresden - HRB 28424 - Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

--
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
___
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main