Messages in this thread | | | Date | Fri, 06 Jan 2012 12:25:20 +0000 | From | "Jan Beulich" <> | Subject | Re: x86-64: memset()/memcpy() not fully standards compliant |
| |
>>> On 06.01.12 at 12:08, Andi Kleen <andi@firstfloor.org> wrote: >> It's not the traditional bootmem implementation anymore, but >> alloc_bootmem() et al still exist, and still clear the allocated memory >> (in __alloc_memory_core_early()). So there is a code path that can >> validly be used (and it is this code path that is presenting one of the >> problems with the non-pv-ops Xen kernels, as they're using flatmem >> rather than sparsemem since their physical address space is always >> fully continuous). > > Yes but there should be no callers that do alloc_bootmem(4G) > The biggest ones afak are the 1GB pages I added some time ago. > > How is it a problem in the non pv Xen kernels?
pgdat->node_mem_map[] exceeds 4G when total memory goes far enough beyond 292G. At some later point ->node_page_cgroup[] also exceeds 4G. Finally, the phys-to-machine mapping (which gets resized during boot) exceeds 4G when crossing the 2T boundary.
Jan
| |