Lines Matching refs:dmem
113 struct nouveau_dmem *dmem = chunk->drm->dmem;
115 spin_lock(&dmem->lock);
116 page->zone_device_data = dmem->free_pages;
117 dmem->free_pages = page;
125 spin_unlock(&dmem->lock);
152 if (drm->dmem->migrate.copy_func(drm, 1, NOUVEAU_APER_HOST, *dma_addr,
164 struct nouveau_dmem *dmem = drm->dmem;
212 nouveau_fence_new(&fence, dmem->migrate.chan);
274 mutex_lock(&drm->dmem->mutex);
275 list_add(&chunk->list, &drm->dmem->chunks);
276 mutex_unlock(&drm->dmem->mutex);
280 spin_lock(&drm->dmem->lock);
282 page->zone_device_data = drm->dmem->free_pages;
283 drm->dmem->free_pages = page;
287 spin_unlock(&drm->dmem->lock);
313 spin_lock(&drm->dmem->lock);
314 if (drm->dmem->free_pages) {
315 page = drm->dmem->free_pages;
316 drm->dmem->free_pages = page->zone_device_data;
319 spin_unlock(&drm->dmem->lock);
321 spin_unlock(&drm->dmem->lock);
344 if (drm->dmem == NULL)
347 mutex_lock(&drm->dmem->mutex);
348 list_for_each_entry(chunk, &drm->dmem->chunks, list) {
353 mutex_unlock(&drm->dmem->mutex);
361 if (drm->dmem == NULL)
364 mutex_lock(&drm->dmem->mutex);
365 list_for_each_entry(chunk, &drm->dmem->chunks, list)
367 mutex_unlock(&drm->dmem->mutex);
405 nouveau_fence_new(&fence, chunk->drm->dmem->migrate.chan);
421 if (drm->dmem == NULL)
424 mutex_lock(&drm->dmem->mutex);
426 list_for_each_entry_safe(chunk, tmp, &drm->dmem->chunks, list) {
438 mutex_unlock(&drm->dmem->mutex);
446 struct nvif_push *push = drm->dmem->migrate.chan->chan.push;
519 struct nvif_push *push = drm->dmem->migrate.chan->chan.push;
579 drm->dmem->migrate.copy_func = nvc0b5_migrate_copy;
580 drm->dmem->migrate.clear_func = nvc0b5_migrate_clear;
581 drm->dmem->migrate.chan = drm->ttm.chan;
598 if (!(drm->dmem = kzalloc(sizeof(*drm->dmem), GFP_KERNEL)))
601 drm->dmem->drm = drm;
602 mutex_init(&drm->dmem->mutex);
603 INIT_LIST_HEAD(&drm->dmem->chunks);
604 mutex_init(&drm->dmem->mutex);
605 spin_lock_init(&drm->dmem->lock);
610 kfree(drm->dmem);
611 drm->dmem = NULL;
637 if (drm->dmem->migrate.copy_func(drm, 1,
642 if (drm->dmem->migrate.clear_func(drm, page_size(dpage),
678 nouveau_fence_new(&fence, drm->dmem->migrate.chan);
710 if (drm->dmem == NULL)