Genode 16.08 nova.iso rebooting on real Core 2 Duo after relocating modules

Alexander Boettcher alexander.boettcher at ...1...
Thu Sep 22 09:14:59 CEST 2016


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.helmuth at ...1...>:
>>> 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 at ...445...:~$ 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 at 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




More information about the users mailing list