Richard Braun, on Fri 12 Aug 2016 19:50:51 +0200, wrote: > On Fri, Aug 12, 2016 at 07:08:07PM +0200, Samuel Thibault wrote: > > More precisely though, adding debugging to vm_page_load: > > > > vm_page_load 10000-1000000 10000-1000000 > > vm_page_load 1000000-7a000000 114f000-79c41000 > > vm_page_load 7a000000-7ffe0000 7a000000-7ffe0000 > > > > I.e. it properly skips the kernel (1000000-114f000), but nothing else. > > > > What is supposed to exclude everything else? (modules, VGA BIOS, etc.) > > Look at the vm_page_load calls and you'll see there is a range of > available pages inside each loaded region.
That's what I'm talking about, and that's the second part of the printfs above, and they are wrong: 10000-1000000 is definitely wrong on a PC, and it includes the debugging symbols. > 3/ When enabling the virtual memory system, biosmem_setup is called. > It loads each segment into the vm_page module, but is careful to clip > the biosmem heap from them. But nothing else. > When loading a segment, the biosmem heap > part is passed as [avail_start, avail_end] to vm_page_load. > To properly answer your question, step 1/ is what looks at the boot > data (biosmem_find_boot_data) so that the resulting heap boundaries > completely exclude any. Yes, but only the heap. The load of segments not containing the heap is full: vm_page_load 10000-1000000 10000-1000000 vm_page_load 7a000000-7ffe0000 7a000000-7ffe0000 Samuel