]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
Merge from vmc-playground branch:
authorattilio <attilio@FreeBSD.org>
Tue, 26 Feb 2013 23:35:27 +0000 (23:35 +0000)
committerattilio <attilio@FreeBSD.org>
Tue, 26 Feb 2013 23:35:27 +0000 (23:35 +0000)
commitcc89d0bd92235897b82b75614fcf8d8f6b33e551
tree9899ba247e015337e5b50f08536fdad949aff6ae
parentfc11335acc0f0255377e8c430cd3dbc31e123d5c
Merge from vmc-playground branch:
Replace the sub-optimal uma_zone_set_obj() primitive with more modern
uma_zone_reserve_kva().  The new primitive reserves before hand
the necessary KVA space to cater the zone allocations and allocates pages
with ALLOC_NOOBJ.  More specifically:
- uma_zone_reserve_kva() does not need an object to cater the backend
  allocator.
- uma_zone_reserve_kva() can cater M_WAITOK requests, in order to
  serve zones which need to do uma_prealloc() too.
- When possible, uma_zone_reserve_kva() uses directly the direct-mapping
  by uma_small_alloc() rather than relying on the KVA / offset
  combination.

The removal of the object attribute allows 2 further changes:
1) _vm_object_allocate() becomes static within vm_object.c
2) VM_OBJECT_LOCK_INIT() is removed.  This function is replaced by
   direct calls to mtx_init() as there is no need to export it anymore
   and the calls aren't either homogeneous anymore: there are now small
   differences between arguments passed to mtx_init().

Sponsored by: EMC / Isilon storage division
Reviewed by: alc (which also offered almost all the comments)
Tested by: pho, jhb, davide
sys/arm/arm/pmap-v6.c
sys/arm/arm/pmap.c
sys/powerpc/booke/pmap.c
sys/vm/swap_pager.c
sys/vm/uma.h
sys/vm/uma_core.c
sys/vm/uma_int.h
sys/vm/vm_map.c
sys/vm/vm_object.c
sys/vm/vm_object.h