Lines Matching refs:map

44 						  struct drm_local_map *map)  in drm_find_matching_map()  argument
56 if (!entry->map || in drm_find_matching_map()
57 map->type != entry->map->type || in drm_find_matching_map()
60 switch (map->type) { in drm_find_matching_map()
62 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
67 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
68 (map->offset & 0xffffffff)) in drm_find_matching_map()
73 if (entry->map->offset == map->offset) in drm_find_matching_map()
141 struct drm_local_map *map; in drm_addmap_core() local
147 map = kmalloc(sizeof(*map), M_DRM, GFP_KERNEL); in drm_addmap_core()
148 if (!map) in drm_addmap_core()
151 map->offset = offset; in drm_addmap_core()
152 map->size = size; in drm_addmap_core()
153 map->flags = flags; in drm_addmap_core()
154 map->type = type; in drm_addmap_core()
160 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
161 kfree(map); in drm_addmap_core()
165 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
171 if (map->type == _DRM_SHM) in drm_addmap_core()
172 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
174 if ((map->offset & (~(resource_size_t) LINUX_PAGE_MASK)) || (map->size & (~LINUX_PAGE_MASK))) { in drm_addmap_core()
175 kfree(map); in drm_addmap_core()
178 map->mtrr = -1; in drm_addmap_core()
179 map->handle = NULL; in drm_addmap_core()
181 switch (map->type) { in drm_addmap_core()
185 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
186 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
187 kfree(map); in drm_addmap_core()
195 list = drm_find_matching_map(dev, map); in drm_addmap_core()
197 if (list->map->size != map->size) { in drm_addmap_core()
200 map->type, map->size, in drm_addmap_core()
201 list->map->size); in drm_addmap_core()
202 list->map->size = map->size; in drm_addmap_core()
205 kfree(map); in drm_addmap_core()
210 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
211 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
212 map->mtrr = in drm_addmap_core()
213 arch_phys_wc_add(map->offset, map->size); in drm_addmap_core()
215 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
216 if (map->flags & _DRM_WRITE_COMBINING) in drm_addmap_core()
217 map->handle = ioremap_wc(map->offset, in drm_addmap_core()
218 map->size); in drm_addmap_core()
220 map->handle = ioremap(map->offset, map->size); in drm_addmap_core()
221 if (!map->handle) { in drm_addmap_core()
222 kfree(map); in drm_addmap_core()
229 list = drm_find_matching_map(dev, map); in drm_addmap_core()
231 if(list->map->size != map->size) { in drm_addmap_core()
234 map->type, map->size, list->map->size); in drm_addmap_core()
235 list->map->size = map->size; in drm_addmap_core()
238 kfree(map); in drm_addmap_core()
242 map->handle = vmalloc_user(map->size); in drm_addmap_core()
244 map->size, order_base_2(map->size), map->handle); in drm_addmap_core()
245 if (!map->handle) { in drm_addmap_core()
246 kfree(map); in drm_addmap_core()
249 map->offset = (unsigned long)map->handle; in drm_addmap_core()
250 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
253 vfree(map->handle); in drm_addmap_core()
254 kfree(map); in drm_addmap_core()
257 dev->sigdata.lock = dev->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
266 kfree(map); in drm_addmap_core()
270 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
278 if (map->offset < dev->agp->base || in drm_addmap_core()
279 map->offset > dev->agp->base + in drm_addmap_core()
281 map->offset += dev->agp->base; in drm_addmap_core()
283 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
292 if ((map->offset >= entry->bound) && in drm_addmap_core()
293 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
299 kfree(map); in drm_addmap_core()
303 (unsigned long long)map->offset, map->size); in drm_addmap_core()
311 kfree(map); in drm_addmap_core()
314 map->handle = (void *)(uintptr_t)(dev->sg->vaddr + offset); in drm_addmap_core()
315 map->offset = dev->sg->vaddr + offset; in drm_addmap_core()
322 dmah = drm_pci_alloc(dev, map->size, map->size); in drm_addmap_core()
324 kfree(map); in drm_addmap_core()
327 map->handle = dmah->vaddr; in drm_addmap_core()
328 map->offset = (unsigned long)dmah->busaddr; in drm_addmap_core()
332 kfree(map); in drm_addmap_core()
338 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
339 iounmap(map->handle); in drm_addmap_core()
340 kfree(map); in drm_addmap_core()
343 list->map = map; in drm_addmap_core()
350 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
351 map->offset; in drm_addmap_core()
353 (map->type == _DRM_SHM)); in drm_addmap_core()
355 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
356 iounmap(map->handle); in drm_addmap_core()
357 kfree(map); in drm_addmap_core()
366 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
381 *map_ptr = list->map; in drm_legacy_addmap()
400 struct drm_map *map = data; in drm_legacy_addmap_ioctl() local
404 if (!(capable(CAP_SYS_ADMIN) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_legacy_addmap_ioctl()
411 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_legacy_addmap_ioctl()
412 map->flags, &maplist); in drm_legacy_addmap_ioctl()
418 map->handle = (void *)(unsigned long)maplist->user_token; in drm_legacy_addmap_ioctl()
426 map->mtrr = -1; in drm_legacy_addmap_ioctl()
447 struct drm_map *map = data; in drm_legacy_getmap_ioctl() local
457 idx = map->offset; in drm_legacy_getmap_ioctl()
470 if (!r_list || !r_list->map) { in drm_legacy_getmap_ioctl()
475 map->offset = r_list->map->offset; in drm_legacy_getmap_ioctl()
476 map->size = r_list->map->size; in drm_legacy_getmap_ioctl()
477 map->type = r_list->map->type; in drm_legacy_getmap_ioctl()
478 map->flags = r_list->map->flags; in drm_legacy_getmap_ioctl()
479 map->handle = (void *)(unsigned long) r_list->user_token; in drm_legacy_getmap_ioctl()
480 map->mtrr = r_list->map->mtrr; in drm_legacy_getmap_ioctl()
497 int drm_legacy_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap_locked() argument
506 if (r_list->map == map) { in drm_legacy_rmmap_locked()
520 switch (map->type) { in drm_legacy_rmmap_locked()
522 iounmap(map->handle); in drm_legacy_rmmap_locked()
525 arch_phys_wc_del(map->mtrr); in drm_legacy_rmmap_locked()
528 vfree(map->handle); in drm_legacy_rmmap_locked()
541 dmah.vaddr = map->handle; in drm_legacy_rmmap_locked()
542 dmah.busaddr = map->offset; in drm_legacy_rmmap_locked()
543 dmah.size = map->size; in drm_legacy_rmmap_locked()
547 kfree(map); in drm_legacy_rmmap_locked()
553 void drm_legacy_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_legacy_rmmap() argument
560 drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap()
575 drm_legacy_rmmap_locked(dev, r_list->map); in drm_legacy_master_rmmaps()
601 struct drm_local_map *map = NULL; in drm_legacy_rmmap_ioctl() local
611 if (r_list->map && in drm_legacy_rmmap_ioctl()
613 r_list->map->flags & _DRM_REMOVABLE) { in drm_legacy_rmmap_ioctl()
614 map = r_list->map; in drm_legacy_rmmap_ioctl()
622 if (list_empty(&dev->maplist) || !map) { in drm_legacy_rmmap_ioctl()
628 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_legacy_rmmap_ioctl()
633 ret = drm_legacy_rmmap_locked(dev, map); in drm_legacy_rmmap_ioctl()
1486 struct drm_local_map *map = dev->agp_buffer_map; in __drm_legacy_mapbufs() local
1489 if (!map) { in __drm_legacy_mapbufs()
1493 virtual = vm_mmap(file_priv->filp, 0, map->size, in __drm_legacy_mapbufs()
1575 if (entry->map && entry->map->type == _DRM_SHM && in drm_legacy_getsarea()
1576 (entry->map->flags & _DRM_CONTAINS_LOCK)) { in drm_legacy_getsarea()
1577 return entry->map; in drm_legacy_getsarea()