Lines Matching refs:entry
50 static void drm_sg_cleanup(struct drm_sg_mem * entry) in drm_sg_cleanup() argument
55 for (i = 0; i < entry->pages; i++) { in drm_sg_cleanup()
56 page = entry->pagelist[i]; in drm_sg_cleanup()
61 vfree(entry->virtual); in drm_sg_cleanup()
63 kfree(entry->busaddr); in drm_sg_cleanup()
64 kfree(entry->pagelist); in drm_sg_cleanup()
65 kfree(entry); in drm_sg_cleanup()
86 struct drm_sg_mem *entry; in drm_legacy_sg_alloc() local
100 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in drm_legacy_sg_alloc()
101 if (!entry) in drm_legacy_sg_alloc()
107 entry->pages = pages; in drm_legacy_sg_alloc()
108 entry->pagelist = kcalloc(pages, sizeof(*entry->pagelist), GFP_KERNEL); in drm_legacy_sg_alloc()
109 if (!entry->pagelist) { in drm_legacy_sg_alloc()
110 kfree(entry); in drm_legacy_sg_alloc()
114 entry->busaddr = kcalloc(pages, sizeof(*entry->busaddr), GFP_KERNEL); in drm_legacy_sg_alloc()
115 if (!entry->busaddr) { in drm_legacy_sg_alloc()
116 kfree(entry->pagelist); in drm_legacy_sg_alloc()
117 kfree(entry); in drm_legacy_sg_alloc()
121 entry->virtual = drm_vmalloc_dma(pages << PAGE_SHIFT); in drm_legacy_sg_alloc()
122 if (!entry->virtual) { in drm_legacy_sg_alloc()
123 kfree(entry->busaddr); in drm_legacy_sg_alloc()
124 kfree(entry->pagelist); in drm_legacy_sg_alloc()
125 kfree(entry); in drm_legacy_sg_alloc()
132 memset(entry->virtual, 0, pages << PAGE_SHIFT); in drm_legacy_sg_alloc()
134 entry->handle = ScatterHandle((unsigned long)entry->virtual); in drm_legacy_sg_alloc()
136 DRM_DEBUG("handle = %08lx\n", entry->handle); in drm_legacy_sg_alloc()
137 DRM_DEBUG("virtual = %p\n", entry->virtual); in drm_legacy_sg_alloc()
139 for (i = (unsigned long)entry->virtual, j = 0; j < pages; in drm_legacy_sg_alloc()
141 entry->pagelist[j] = vmalloc_to_page((void *)i); in drm_legacy_sg_alloc()
142 if (!entry->pagelist[j]) in drm_legacy_sg_alloc()
144 SetPageReserved(entry->pagelist[j]); in drm_legacy_sg_alloc()
147 request->handle = entry->handle; in drm_legacy_sg_alloc()
149 dev->sg = entry; in drm_legacy_sg_alloc()
161 tmp = page_address(entry->pagelist[i]); in drm_legacy_sg_alloc()
167 tmp = (unsigned long *)((u8 *) entry->virtual + in drm_legacy_sg_alloc()
179 tmp = page_address(entry->pagelist[i]); in drm_legacy_sg_alloc()
194 drm_sg_cleanup(entry); in drm_legacy_sg_alloc()
202 struct drm_sg_mem *entry; in drm_legacy_sg_free() local
210 entry = dev->sg; in drm_legacy_sg_free()
213 if (!entry || entry->handle != request->handle) in drm_legacy_sg_free()
216 DRM_DEBUG("virtual = %p\n", entry->virtual); in drm_legacy_sg_free()
218 drm_sg_cleanup(entry); in drm_legacy_sg_free()