2016-09-21 8:20 GMT-04:00 Christian Helmuth <christian.helmuth@...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@...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.