Re: vbox4_ubuntu_16_04_64.run recipe
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
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.
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
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
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