Hello Paul,

On 22.01.2013 23:59, Christian Helmuth wrote:
> For me, it looks like your VESA BIOS tries to access physical page 0,
> which is not available. This fact is also logged in the following
> lines
> 
>> :io_mem_alloc: Allocator 16165c dump:
>>  Block: [0009f000,00100000) size=00061000 avail=00061000 max_avail=00061000
>>  Block: [00400000,01800000) size=01400000 avail=01400000 max_avail=01400000
>>  Block: [018b6000,01e66000) size=005b0000 avail=005b0000 max_avail=005b0000
>>  Block: [1fcf0000,1fd00000) size=00010000 avail=00010000 max_avail=e0181000
>>  Block: [1fe80000,00001000) size=e0181000 avail=e0181000 max_avail=e0181000
This line looks suspicious. The start address is ok, but the end address
isn't. It seems to have been wrapped. So, I would expect something like:

Block: [1fe80000,ffffffff) size=e0180000 avail=e0180000 max_avail=e0180000
Block: [00000000,00001000) size=1000 avail=1000 max_avail=1000

It looks like that the allocator merged the 2 blocks into one, just a
guess ...

Mmh, please apply following patch and post the output in order to
understand what lead to the problem.

>>  => mem_size=3787071488 (3611 MB) / mem_avail=3787071488 (3611 MB)
> 
> The region [0,1000) is missing. I don't know why this happens as
> base-nova/src/core/platform.cc states in line 360
> 
>   /* needed as I/O memory by the VESA driver */
>   _io_mem_alloc.add_range(0, 0x1000);
>   _core_mem_alloc.phys_alloc()->remove_range(0, 0x1000);
> 
> Maybe Alexander can shed some light on this?

With the patch we know hopefully more ...

Cheers,

Alexander Boettcher.
diff --git a/base-nova/src/core/platform.cc b/base-nova/src/core/platform.cc
index bcdbb9e..ad9c662 100644
--- a/base-nova/src/core/platform.cc
+++ b/base-nova/src/core/platform.cc
@@ -353,11 +353,15 @@ Platform::Platform() :
 			size = round_page(mem_desc->addr + mem_desc->size) - base;
 
 		_io_mem_alloc.add_range(base, size);
+		if (verbose_boot_info)
+			printf("reserve  io       memory: 0x%16lx - size: 0x%zx\n", base, size);
 		_core_mem_alloc.phys_alloc()->remove_range(base, size);
+		printf(":io_mem_alloc: "); _io_mem_alloc.raw()->dump_addr_tree();
 	}
 
 	/* needed as I/O memory by the VESA driver */
 	_io_mem_alloc.add_range(0, 0x1000);
+	printf(":io_mem_alloc: "); _io_mem_alloc.raw()->dump_addr_tree();
 	_core_mem_alloc.phys_alloc()->remove_range(0, 0x1000);
 
 	/* exclude pages holding multi-boot command lines from core allocators */
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnnow-d2d
_______________________________________________
Genode-main mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/genode-main

Reply via email to