On Sunday 20 May 2012 19:34:26 Alan Cox wrote: ... > > In any case, I wish to be certain that a particular kmem virtual address > > range is mapped to superpages - how can I enforce that at malloc time, > > and / or find out later if I really got my kmem mapped to superpages? > > Perhaps vm_map_lookup() could provide more info, but I'm wondering if > > someone already wrote a wrapper function for that, which takes only the > > base virtual address as a single argument? > > Try using pmap_mincore() to verify that the mappings are superpages.
flags = pmap_mincore(vmspace_pmap(curthread->td_proc->p_vmspace), (vm_offset_t) addr)); OK, that works, and now I know my kmem chunk is on a superpage, horray!!! Thanks! > > BTW, apparently malloc(size, M_TEMP, M_NOWAIT) requests fail for size> > > 1G, even at boot time. Any ideas how to circumvent that (8.3-STABLE, > > amd64, 4G physical RAM)? > > I suspect that you need to increase the size of your kmem map. Huh any hints how should I achieve that? In desperation I placed vm.kmem_size=8G in /boot/loader.conf and got this: vm.kmem_map_free: 8123924480 vm.kmem_map_size: 8364032 vm.kmem_size_scale: 1 vm.kmem_size_max: 329853485875 vm.kmem_size_min: 0 vm.kmem_size: 8132288512 but malloc(2G) still fails... Thanks, Marko _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"