Lines Matching full:reserve

80  * @reserve: pool of memory from which devices reserve entitlement, incl. spare
93 struct vio_cmo_pool reserve; member
153 /* Determine the amount of free entitlement available in reserve */ in vio_cmo_alloc()
183 * the reserve pool is used to reduce device entitlement, the excess
184 * pool is used to increase the reserve pool toward the desired entitlement
210 /* Spare is a subset of the reserve pool, replenish it first. */ in vio_cmo_dealloc()
214 * Replenish the spare in the reserve pool from the excess pool. in vio_cmo_dealloc()
215 * This moves entitlement into the reserve pool. in vio_cmo_dealloc()
220 vio_cmo.reserve.size += tmp; in vio_cmo_dealloc()
228 * Replenish the spare in the reserve pool from the reserve pool. in vio_cmo_dealloc()
244 * Increase the reserve pool until the desired allocation is met. in vio_cmo_dealloc()
245 * Move an allocation freed from the excess pool into the reserve in vio_cmo_dealloc()
248 if (excess_freed && (vio_cmo.desired > vio_cmo.reserve.size)) { in vio_cmo_dealloc()
249 tmp = min(excess_freed, (vio_cmo.desired - vio_cmo.reserve.size)); in vio_cmo_dealloc()
252 vio_cmo.reserve.size += tmp; in vio_cmo_dealloc()
294 vio_cmo.reserve.size += tmp; in vio_cmo_entitlement_update()
377 * Upon completion sizes of the reserve and excess pools are calculated.
459 /* Calculate new reserve and excess pool sizes */ in vio_cmo_balance()
460 cmo->reserve.size = cmo->min; in vio_cmo_balance()
466 /* Calculated reserve size above the minimum entitlement */ in vio_cmo_balance()
468 cmo->reserve.size += (viodev->cmo.entitled - in vio_cmo_balance()
474 cmo->excess.size = cmo->entitled - cmo->reserve.size; in vio_cmo_balance()
666 * any reserve memory in the change region to the excess pool. in vio_cmo_set_dev_desired()
669 vio_cmo.reserve.size -= viodev->cmo.entitled - desired; in vio_cmo_set_dev_desired()
672 * If entitlement moving from the reserve pool to the in vio_cmo_set_dev_desired()
761 * the reserve pool. in vio_cmo_bus_probe()
786 vio_cmo.reserve.size += tmp; in vio_cmo_bus_probe()
848 * Save min allocation for device in reserve as long in vio_cmo_bus_remove()
854 /* Replenish spare from freed reserve pool */ in vio_cmo_bus_remove()
862 /* Remaining reserve goes to excess pool */ in vio_cmo_bus_remove()
865 vio_cmo.reserve.size -= viodev->cmo.entitled; in vio_cmo_bus_remove()
888 * Set up the reserve and excess entitlement pools based on available
890 * require entitlement in the reserve pool.
919 vio_cmo.reserve.size = vio_cmo.spare; in vio_cmo_bus_init()
920 vio_cmo.reserve.size += (vio_cmo_num_OF_devs() * in vio_cmo_bus_init()
922 if (vio_cmo.reserve.size > vio_cmo.entitled) { in vio_cmo_bus_init()
929 vio_cmo.excess.size = vio_cmo.entitled - vio_cmo.reserve.size; in vio_cmo_bus_init()
931 vio_cmo.min = vio_cmo.reserve.size; in vio_cmo_bus_init()
932 vio_cmo.desired = vio_cmo.reserve.size; in vio_cmo_bus_init()
1028 viobus_cmo_pool_rd_attr(reserve, size);