Home | History | Annotate | Download | only in drm

Lines Matching refs:hole

201     struct radeon_bo_va_hole *hole, *n;
205 /* first look for a hole */
206 LIST_FOR_EACH_ENTRY_SAFE(hole, n, &mgr->va_holes, list) {
207 offset = hole->offset;
214 if (offset >= (hole->offset + hole->size)) {
217 if (!waste && hole->size == size) {
218 offset = hole->offset;
219 list_del(&hole->list);
220 FREE(hole);
224 if ((hole->size - waste) > size) {
228 n->offset = hole->offset;
229 list_add(&n->list, &hole->list);
231 hole->size -= (size + waste);
232 hole->offset += size + waste;
236 if ((hole->size - waste) == size) {
237 hole->size = waste;
266 struct radeon_bo_va_hole *hole;
267 hole = CALLOC_STRUCT(radeon_bo_va_hole);
268 if (hole) {
269 hole->size = va - mgr->va_offset;
270 hole->offset = mgr->va_offset;
271 list_add(&hole->list, &mgr->va_holes);
276 struct radeon_bo_va_hole *hole, *n;
281 LIST_FOR_EACH_ENTRY_SAFE(hole, n, &mgr->va_holes, list) {
282 hole_end = hole->offset + hole->size;
284 if (hole->offset >= va_end || hole_end <= va)
286 if (hole->offset >= va && hole_end <= va_end) {
287 list_del(&hole->list);
288 FREE(hole);
291 if (hole->offset >= va)
292 hole->offset = va_end;
295 hole->size = hole_end - hole->offset;
303 struct radeon_bo_va_hole *hole;
308 /* Delete uppermost hole if it reaches the new top */
310 hole = container_of(mgr->va_holes.next, hole, list);
311 if ((hole->offset + hole->size) == va) {
312 mgr->va_offset = hole->offset;
313 list_del(&hole->list);
314 FREE(hole);
320 hole = container_of(&mgr->va_holes, hole, list);
324 hole = next;
327 if (&hole->list != &mgr->va_holes) {
328 /* Grow upper hole if it's adjacent */
329 if (hole->offset == (va + size)) {
330 hole->offset = va;
331 hole->size += size;
332 /* Merge lower hole if it's adjacent */
333 if (next != hole && &next->list != &mgr->va_holes &&
335 next->size += hole->size;
336 list_del(&hole->list);
337 FREE(hole);
343 /* Grow lower hole if it's adjacent */
344 if (next != hole && &next->list != &mgr->va_holes &&
357 list_add(&next->list, &hole->list);