Lines Matching refs:map

40 						  struct drm_local_map *map)  in drm_find_matching_map()  argument
52 if (!entry->map || in drm_find_matching_map()
53 map->type != entry->map->type || in drm_find_matching_map()
56 switch (map->type) { in drm_find_matching_map()
58 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
63 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
64 (map->offset & 0xffffffff)) in drm_find_matching_map()
69 if (entry->map->offset == map->offset) in drm_find_matching_map()
137 struct drm_local_map *map; in drm_addmap_core() local
143 map = kmalloc(sizeof(*map), GFP_KERNEL); in drm_addmap_core()
144 if (!map) in drm_addmap_core()
147 map->offset = offset; in drm_addmap_core()
148 map->size = size; in drm_addmap_core()
149 map->flags = flags; in drm_addmap_core()
150 map->type = type; in drm_addmap_core()
156 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
157 kfree(map); in drm_addmap_core()
161 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
167 if (map->type == _DRM_SHM) in drm_addmap_core()
168 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
170 if ((map->offset & (~(resource_size_t)PAGE_MASK)) || (map->size & (~PAGE_MASK))) { in drm_addmap_core()
171 kfree(map); in drm_addmap_core()
174 map->mtrr = -1; in drm_addmap_core()
175 map->handle = NULL; in drm_addmap_core()
177 switch (map->type) { in drm_addmap_core()
181 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
182 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
183 kfree(map); in drm_addmap_core()
191 list = drm_find_matching_map(dev, map); in drm_addmap_core()
193 if (list->map->size != map->size) { in drm_addmap_core()
196 map->type, map->size, in drm_addmap_core()
197 list->map->size); in drm_addmap_core()
198 list->map->size = map->size; in drm_addmap_core()
201 kfree(map); in drm_addmap_core()
206 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
207 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
208 map->mtrr = in drm_addmap_core()
209 arch_phys_wc_add(map->offset, map->size); in drm_addmap_core()
211 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
212 if (map->flags & _DRM_WRITE_COMBINING) in drm_addmap_core()
213 map->handle = ioremap_wc(map->offset, in drm_addmap_core()
214 map->size); in drm_addmap_core()
216 map->handle = ioremap(map->offset, map->size); in drm_addmap_core()
217 if (!map->handle) { in drm_addmap_core()
218 kfree(map); in drm_addmap_core()
225 list = drm_find_matching_map(dev, map); in drm_addmap_core()
227 if(list->map->size != map->size) { in drm_addmap_core()
230 map->type, map->size, list->map->size); in drm_addmap_core()
231 list->map->size = map->size; in drm_addmap_core()
234 kfree(map); in drm_addmap_core()
238 map->handle = vmalloc_user(map->size); in drm_addmap_core()
240 map->size, order_base_2(map->size), map->handle); in drm_addmap_core()
241 if (!map->handle) { in drm_addmap_core()
242 kfree(map); in drm_addmap_core()
245 map->offset = (unsigned long)map->handle; in drm_addmap_core()
246 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
249 vfree(map->handle); in drm_addmap_core()
250 kfree(map); in drm_addmap_core()
253 dev->sigdata.lock = dev->primary->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
261 kfree(map); in drm_addmap_core()
265 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
273 if (map->offset < dev->agp->base || in drm_addmap_core()
274 map->offset > dev->agp->base + in drm_addmap_core()
276 map->offset += dev->agp->base; in drm_addmap_core()
278 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
287 if ((map->offset >= entry->bound) && in drm_addmap_core()
288 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
294 kfree(map); in drm_addmap_core()
298 (unsigned long long)map->offset, map->size); in drm_addmap_core()
304 kfree(map); in drm_addmap_core()
307 map->offset += (unsigned long)dev->sg->virtual; in drm_addmap_core()
314 dmah = drm_pci_alloc(dev, map->size, map->size); in drm_addmap_core()
316 kfree(map); in drm_addmap_core()
319 map->handle = dmah->vaddr; in drm_addmap_core()
320 map->offset = (unsigned long)dmah->busaddr; in drm_addmap_core()
324 kfree(map); in drm_addmap_core()
330 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
331 iounmap(map->handle); in drm_addmap_core()
332 kfree(map); in drm_addmap_core()
335 list->map = map; in drm_addmap_core()
342 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
343 map->offset; in drm_addmap_core()
345 (map->type == _DRM_SHM)); in drm_addmap_core()
347 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
348 iounmap(map->handle); in drm_addmap_core()
349 kfree(map); in drm_addmap_core()
358 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
373 *map_ptr = list->map; in drm_legacy_addmap()
392 struct drm_map *map = data; in drm_legacy_addmap_ioctl() local
396 if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_legacy_addmap_ioctl()
399 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_legacy_addmap_ioctl()
400 map->flags, &maplist); in drm_legacy_addmap_ioctl()
406 map->handle = (void *)(unsigned long)maplist->user_token; in drm_legacy_addmap_ioctl()
414 map->mtrr = -1; in drm_legacy_addmap_ioctl()
429 int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap_locked() argument
438 if (r_list->map == map) { in drm_legacy_rmmap_locked()
452 switch (map->type) { in drm_legacy_rmmap_locked()
454 iounmap(map->handle); in drm_legacy_rmmap_locked()
457 arch_phys_wc_del(map->mtrr); in drm_legacy_rmmap_locked()
460 vfree(map->handle); in drm_legacy_rmmap_locked()
473 dmah.vaddr = map->handle; in drm_legacy_rmmap_locked()
474 dmah.busaddr = map->offset; in drm_legacy_rmmap_locked()
475 dmah.size = map->size; in drm_legacy_rmmap_locked()
479 kfree(map); in drm_legacy_rmmap_locked()
485 int drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap() argument
490 ret = drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap()
516 struct drm_local_map *map = NULL; in drm_legacy_rmmap_ioctl() local
522 if (r_list->map && in drm_legacy_rmmap_ioctl()
524 r_list->map->flags & _DRM_REMOVABLE) { in drm_legacy_rmmap_ioctl()
525 map = r_list->map; in drm_legacy_rmmap_ioctl()
533 if (list_empty(&dev->maplist) || !map) { in drm_legacy_rmmap_ioctl()
539 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_legacy_rmmap_ioctl()
544 ret = drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap_ioctl()
1393 struct drm_local_map *map = dev->agp_buffer_map; in drm_legacy_mapbufs() local
1396 if (!map) { in drm_legacy_mapbufs()
1400 virtual = vm_mmap(file_priv->filp, 0, map->size, in drm_legacy_mapbufs()
1466 if (entry->map && entry->map->type == _DRM_SHM && in drm_legacy_getsarea()
1467 (entry->map->flags & _DRM_CONTAINS_LOCK)) { in drm_legacy_getsarea()
1468 return entry->map; in drm_legacy_getsarea()