Lines Matching refs:pobj

29 int psb_gem_pin(struct psb_gem_object *pobj)  in psb_gem_pin()  argument
31 struct drm_gem_object *obj = &pobj->base; in psb_gem_pin()
43 if (pobj->in_gart || pobj->stolen) in psb_gem_pin()
56 psb_gtt_insert_pages(dev_priv, &pobj->resource, pages); in psb_gem_pin()
58 (gpu_base + pobj->offset), npages, 0, 0, in psb_gem_pin()
61 pobj->pages = pages; in psb_gem_pin()
64 ++pobj->in_gart; in psb_gem_pin()
74 void psb_gem_unpin(struct psb_gem_object *pobj) in psb_gem_unpin() argument
76 struct drm_gem_object *obj = &pobj->base; in psb_gem_unpin()
87 WARN_ON(!pobj->in_gart); in psb_gem_unpin()
89 --pobj->in_gart; in psb_gem_unpin()
91 if (pobj->in_gart || pobj->stolen) in psb_gem_unpin()
97 (gpu_base + pobj->offset), npages, 0, 0); in psb_gem_unpin()
98 psb_gtt_remove_pages(dev_priv, &pobj->resource); in psb_gem_unpin()
101 set_pages_array_wb(pobj->pages, npages); in psb_gem_unpin()
103 drm_gem_put_pages(obj, pobj->pages, true, false); in psb_gem_unpin()
104 pobj->pages = NULL; in psb_gem_unpin()
114 struct psb_gem_object *pobj = to_psb_gem_object(obj); in psb_gem_free_object() local
117 if (pobj->mmapping) in psb_gem_free_object()
118 psb_gem_unpin(pobj); in psb_gem_free_object()
122 WARN_ON(pobj->in_gart && !pobj->stolen); in psb_gem_free_object()
124 release_resource(&pobj->resource); in psb_gem_free_object()
125 kfree(pobj); in psb_gem_free_object()
143 struct psb_gem_object *pobj; in psb_gem_create() local
149 pobj = kzalloc_obj(*pobj); in psb_gem_create()
150 if (!pobj) in psb_gem_create()
152 obj = &pobj->base; in psb_gem_create()
156 ret = psb_gtt_allocate_resource(dev_priv, &pobj->resource, name, size, align, stolen, in psb_gem_create()
157 &pobj->offset); in psb_gem_create()
162 pobj->stolen = true; in psb_gem_create()
163 pobj->in_gart = 1; in psb_gem_create()
181 return pobj; in psb_gem_create()
184 release_resource(&pobj->resource); in psb_gem_create()
186 kfree(pobj); in psb_gem_create()
204 struct psb_gem_object *pobj; in psb_gem_dumb_create() local
217 pobj = psb_gem_create(dev, size, "gem", false, PAGE_SIZE); in psb_gem_dumb_create()
218 if (IS_ERR(pobj)) in psb_gem_dumb_create()
219 return PTR_ERR(pobj); in psb_gem_dumb_create()
220 obj = &pobj->base; in psb_gem_dumb_create()
259 struct psb_gem_object *pobj; in psb_gem_fault() local
271 pobj = to_psb_gem_object(obj); in psb_gem_fault()
279 if (pobj->mmapping == 0) { in psb_gem_fault()
280 err = psb_gem_pin(pobj); in psb_gem_fault()
286 pobj->mmapping = 1; in psb_gem_fault()
294 if (pobj->stolen) in psb_gem_fault()
295 pfn = (dev_priv->stolen_base + pobj->offset) >> PAGE_SHIFT; in psb_gem_fault()
297 pfn = page_to_pfn(pobj->pages[page_offset]); in psb_gem_fault()
385 struct psb_gem_object *pobj; in psb_gem_mm_populate_resources() local
393 pobj = container_of(r, struct psb_gem_object, resource); in psb_gem_mm_populate_resources()
394 if (pobj->pages) { in psb_gem_mm_populate_resources()
395 psb_gtt_insert_pages(pdev, &pobj->resource, pobj->pages); in psb_gem_mm_populate_resources()
396 size += resource_size(&pobj->resource); in psb_gem_mm_populate_resources()