Hello,

we use as a chained-boot loader bender[0], which relocates the boot
modules before the NOVA kernel actually starts. You may try to remove it
and see whether this changes things. For this you have to edit in

<genode-dir>/tool/run/boot_dir/nova

the lines where bender is used and make the hypervisor the first entry.

Than recompile some simple setup like printf.run and start it on your
target machine. If you don't see any serial messages anymore, you may
have to add the i/o ports of your serial device manually to the NOVA
kernel source code [1]. Bender has also now a option 'norelocate' as
used for sel4 [2], which you may also try.

Cheers,

Alex.

[0] <genode-dir>tool/boot/README
[1] <genode-dir>contrib/nova-<hash>/src/kernel/nova/src/console_serial.cpp
[2] <genode-dir>/tool/run/boot_dir/sel4

On 22.09.2016 00:48, Paul Dufresne wrote:
> 2016-09-21 8:20 GMT-04:00 Christian Helmuth 
> <christian.helm...@genode-labs.com>:
>>> Need 05df2000 bytes to relocate modules.
>>> Relocating to 7980d000:
>>> Copying 483168 bytes...
>> [...]
>>> Copying 114820 bytes...
>>
>> If my calculations from this output are correct the boot modules cover
>> RAM from 0x7980d000 to 0x7f5e9000. Maybe there's a collision in this
>> region?
>>
>>> paul@arcturus:~$ cat /proc/meminfo
>>> MemTotal:        2041768 kB
>>
>> Could you please compare the region above against
>>
>>   cat /proc/iomem'
>>
>> and check if it fits completely into "System RAM"?
> Ehhh... At first I thought there was a problem... but i think it goes
> just before ACPI Non-volatile Storage
> 00100000-7f5ffbff : System RAM
>   01000000-015cb5d4 : Kernel code
>   015cb5d5-01b10aff : Kernel data
>   01c67000-01d34fff : Kernel bss
> 7f5ffc00-7f601bff : ACPI Non-volatile Storage
> 7f601c00-7f603bff : RAM buffer
> 7f603c00-7fffffff : reserved
>   7f800000-7ff7ffff : Graphics Stolen Memory
> 
> It sure looks like a Nova bug (had time to load modules, but not to
> show Nova welcome message).
> In src/init I see:
> void init (mword mbi)
> {
> // Setup 0-page and 1-page
> memset (reinterpret_cast<void *>(&PAGE_0), 0, PAGE_SIZE);
> memset (reinterpret_cast<void *>(&PAGE_1), ~0u, PAGE_SIZE);
> for (void (**func)() = &CTORS_G; func != &CTORS_E; (*func++)()) ;
> Hip::build (mbi);
> for (void (**func)() = &CTORS_C; func != &CTORS_G; (*func++)()) ;
> // Now we're ready to talk to the world
> Console::print ("\fNOVA Microhypervisor v%d-%07lx (%s): %s %s [%s]\n",
> CFG_VER, reinterpret_cast<mword>(&GIT_VER), ARCH, __DATE__, __TIME__,
> COMPILER_STRING);
> Idt::build();
> Gsi::setup();
> Acpi::setup();
> Console_vga::con.setup();
> Keyb::init();
> }
> 
> I believe Hip::(build(mbr) reads the module, and I suppose do the
> relocations shown.
> 
> I am thinking about adding some Console::print inside the loop:
> for (void (**func)() = &CTORS_C; func != &CTORS_G; (*func++)()) ;
> which I barely understand as calling each functions in an array of
> Constructors (CTORS_C).
> 
> Wish I would knew where CTORS_C is defined, but I guess I need not to know.
> I am not so good with coding... so it might be just to the limit of my
> abilities to do and test that.
> 
> ------------------------------------------------------------------------------
> _______________________________________________
> genode-main mailing list
> genode-main@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
> 


-- 
Alexander Boettcher
Genode Labs

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

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

------------------------------------------------------------------------------
_______________________________________________
genode-main mailing list
genode-main@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to