Lines Matching refs:map
52 struct drm_local_map *map) in drm_find_matching_map() argument
65 if (!entry->map || in drm_find_matching_map()
66 map->type != entry->map->type || in drm_find_matching_map()
69 switch (map->type) { in drm_find_matching_map()
71 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
76 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
77 (map->offset & 0xffffffff)) in drm_find_matching_map()
83 if (entry->map->offset == map->offset) in drm_find_matching_map()
152 struct drm_local_map *map; in drm_addmap_core() local
157 map = kmalloc(sizeof(*map), GFP_KERNEL); in drm_addmap_core()
158 if (!map) in drm_addmap_core()
161 map->offset = offset; in drm_addmap_core()
162 map->size = size; in drm_addmap_core()
163 map->flags = flags; in drm_addmap_core()
164 map->type = type; in drm_addmap_core()
170 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
171 kfree(map); in drm_addmap_core()
175 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
181 if (map->type == _DRM_SHM) in drm_addmap_core()
182 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
184 if ((map->offset & (~(resource_size_t)PAGE_MASK)) || (map->size & (~PAGE_MASK))) { in drm_addmap_core()
185 kfree(map); in drm_addmap_core()
188 map->mtrr = -1; in drm_addmap_core()
189 map->handle = NULL; in drm_addmap_core()
191 switch (map->type) { in drm_addmap_core()
195 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
196 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
197 kfree(map); in drm_addmap_core()
205 list = drm_find_matching_map(dev, map); in drm_addmap_core()
207 if (list->map->size != map->size) { in drm_addmap_core()
210 map->type, map->size, in drm_addmap_core()
211 list->map->size); in drm_addmap_core()
212 list->map->size = map->size; in drm_addmap_core()
215 kfree(map); in drm_addmap_core()
220 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
221 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
222 map->mtrr = in drm_addmap_core()
223 arch_phys_wc_add(map->offset, map->size); in drm_addmap_core()
225 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
226 if (map->flags & _DRM_WRITE_COMBINING) in drm_addmap_core()
227 map->handle = ioremap_wc(map->offset, in drm_addmap_core()
228 map->size); in drm_addmap_core()
230 map->handle = ioremap(map->offset, map->size); in drm_addmap_core()
231 if (!map->handle) { in drm_addmap_core()
232 kfree(map); in drm_addmap_core()
239 list = drm_find_matching_map(dev, map); in drm_addmap_core()
241 if (list->map->size != map->size) { in drm_addmap_core()
244 map->type, map->size, list->map->size); in drm_addmap_core()
245 list->map->size = map->size; in drm_addmap_core()
248 kfree(map); in drm_addmap_core()
252 map->handle = vmalloc_user(map->size); in drm_addmap_core()
254 map->size, order_base_2(map->size), map->handle); in drm_addmap_core()
255 if (!map->handle) { in drm_addmap_core()
256 kfree(map); in drm_addmap_core()
259 map->offset = (unsigned long)map->handle; in drm_addmap_core()
260 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
263 vfree(map->handle); in drm_addmap_core()
264 kfree(map); in drm_addmap_core()
267 dev->sigdata.lock = dev->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
275 kfree(map); in drm_addmap_core()
279 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
287 if (map->offset < dev->agp->base || in drm_addmap_core()
288 map->offset > dev->agp->base + in drm_addmap_core()
290 map->offset += dev->agp->base; in drm_addmap_core()
292 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
301 if ((map->offset >= entry->bound) && in drm_addmap_core()
302 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
308 kfree(map); in drm_addmap_core()
312 (unsigned long long)map->offset, map->size); in drm_addmap_core()
318 kfree(map); in drm_addmap_core()
321 map->offset += (unsigned long)dev->sg->virtual; in drm_addmap_core()
329 map->handle = dma_alloc_coherent(dev->dev, in drm_addmap_core()
330 map->size, in drm_addmap_core()
331 &map->offset, in drm_addmap_core()
333 if (!map->handle) { in drm_addmap_core()
334 kfree(map); in drm_addmap_core()
339 kfree(map); in drm_addmap_core()
345 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
346 iounmap(map->handle); in drm_addmap_core()
347 kfree(map); in drm_addmap_core()
350 list->map = map; in drm_addmap_core()
357 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
358 map->offset; in drm_addmap_core()
360 (map->type == _DRM_SHM)); in drm_addmap_core()
362 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
363 iounmap(map->handle); in drm_addmap_core()
364 kfree(map); in drm_addmap_core()
373 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
388 *map_ptr = list->map; in drm_legacy_addmap()
400 return _entry->map; in drm_legacy_findmap()
419 struct drm_map *map = data; in drm_legacy_addmap_ioctl() local
423 if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_legacy_addmap_ioctl()
430 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_legacy_addmap_ioctl()
431 map->flags, &maplist); in drm_legacy_addmap_ioctl()
437 map->handle = (void *)(unsigned long)maplist->user_token; in drm_legacy_addmap_ioctl()
445 map->mtrr = -1; in drm_legacy_addmap_ioctl()
466 struct drm_map *map = data; in drm_legacy_getmap_ioctl() local
476 idx = map->offset; in drm_legacy_getmap_ioctl()
489 if (!r_list || !r_list->map) { in drm_legacy_getmap_ioctl()
494 map->offset = r_list->map->offset; in drm_legacy_getmap_ioctl()
495 map->size = r_list->map->size; in drm_legacy_getmap_ioctl()
496 map->type = r_list->map->type; in drm_legacy_getmap_ioctl()
497 map->flags = r_list->map->flags; in drm_legacy_getmap_ioctl()
498 map->handle = (void *)(unsigned long) r_list->user_token; in drm_legacy_getmap_ioctl()
499 map->mtrr = arch_phys_wc_index(r_list->map->mtrr); in drm_legacy_getmap_ioctl()
516 int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap_locked() argument
524 if (r_list->map == map) { in drm_legacy_rmmap_locked()
538 switch (map->type) { in drm_legacy_rmmap_locked()
540 iounmap(map->handle); in drm_legacy_rmmap_locked()
543 arch_phys_wc_del(map->mtrr); in drm_legacy_rmmap_locked()
546 vfree(map->handle); in drm_legacy_rmmap_locked()
560 map->size, in drm_legacy_rmmap_locked()
561 map->handle, in drm_legacy_rmmap_locked()
562 map->offset); in drm_legacy_rmmap_locked()
565 kfree(map); in drm_legacy_rmmap_locked()
571 void drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap() argument
578 drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap()
593 drm_legacy_rmmap_locked(dev, r_list->map); in drm_legacy_master_rmmaps()
605 drm_legacy_rmmap(dev, r_list->map); in drm_legacy_rmmaps()
627 struct drm_local_map *map = NULL; in drm_legacy_rmmap_ioctl() local
637 if (r_list->map && in drm_legacy_rmmap_ioctl()
639 r_list->map->flags & _DRM_REMOVABLE) { in drm_legacy_rmmap_ioctl()
640 map = r_list->map; in drm_legacy_rmmap_ioctl()
648 if (list_empty(&dev->maplist) || !map) { in drm_legacy_rmmap_ioctl()
654 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_legacy_rmmap_ioctl()
659 ret = drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap_ioctl()
1540 struct drm_local_map *map = dev->agp_buffer_map; in __drm_legacy_mapbufs() local
1543 if (!map) { in __drm_legacy_mapbufs()
1547 virtual = vm_mmap(file_priv->filp, 0, map->size, in __drm_legacy_mapbufs()
1624 if (entry->map && entry->map->type == _DRM_SHM && in drm_legacy_getsarea()
1625 (entry->map->flags & _DRM_CONTAINS_LOCK)) { in drm_legacy_getsarea()
1626 return entry->map; in drm_legacy_getsarea()