Lines Matching refs:map

112 						  struct drm_local_map *map)  in drm_find_matching_map()  argument
124 if (!entry->map || in drm_find_matching_map()
125 map->type != entry->map->type || in drm_find_matching_map()
128 switch (map->type) { in drm_find_matching_map()
130 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
135 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
136 (map->offset & 0xffffffff)) in drm_find_matching_map()
141 if (entry->map->offset == map->offset) in drm_find_matching_map()
209 struct drm_local_map *map; in drm_addmap_core() local
216 map = malloc(sizeof(*map), DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
217 if (!map) in drm_addmap_core()
220 map->offset = offset; in drm_addmap_core()
221 map->size = size; in drm_addmap_core()
222 map->flags = flags; in drm_addmap_core()
223 map->type = type; in drm_addmap_core()
229 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
230 free(map, DRM_MEM_MAPS); in drm_addmap_core()
234 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
240 if (map->type == _DRM_SHM) in drm_addmap_core()
241 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
248 if ((map->offset & ((resource_size_t)PAGE_MASK)) || (map->size & (PAGE_MASK))) { in drm_addmap_core()
249 free(map, DRM_MEM_MAPS); in drm_addmap_core()
252 map->mtrr = -1; in drm_addmap_core()
253 map->handle = NULL; in drm_addmap_core()
255 switch (map->type) { in drm_addmap_core()
260 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
261 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
262 kfree(map); in drm_addmap_core()
271 list = drm_find_matching_map(dev, map); in drm_addmap_core()
273 if (list->map->size != map->size) { in drm_addmap_core()
276 map->type, map->size, in drm_addmap_core()
277 list->map->size); in drm_addmap_core()
278 list->map->size = map->size; in drm_addmap_core()
281 free(map, DRM_MEM_MAPS); in drm_addmap_core()
287 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
288 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
290 map->offset, map->size, in drm_addmap_core()
292 map->mtrr = 1; in drm_addmap_core()
295 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
296 drm_core_ioremap(map, dev); in drm_addmap_core()
297 if (!map->handle) { in drm_addmap_core()
298 free(map, DRM_MEM_MAPS); in drm_addmap_core()
305 list = drm_find_matching_map(dev, map); in drm_addmap_core()
307 if(list->map->size != map->size) { in drm_addmap_core()
310 map->type, map->size, list->map->size); in drm_addmap_core()
311 list->map->size = map->size; in drm_addmap_core()
314 free(map, DRM_MEM_MAPS); in drm_addmap_core()
318 map->handle = malloc(map->size, DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
320 map->size, drm_order(map->size), map->handle); in drm_addmap_core()
321 if (!map->handle) { in drm_addmap_core()
322 free(map, DRM_MEM_MAPS); in drm_addmap_core()
325 map->offset = (unsigned long)map->handle; in drm_addmap_core()
326 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
329 free(map->handle, DRM_MEM_MAPS); in drm_addmap_core()
330 free(map, DRM_MEM_MAPS); in drm_addmap_core()
333 dev->sigdata.lock = dev->primary->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
341 free(map, DRM_MEM_MAPS); in drm_addmap_core()
346 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
355 if (map->offset < dev->agp->base || in drm_addmap_core()
356 map->offset > dev->agp->base + in drm_addmap_core()
358 map->offset += dev->agp->base; in drm_addmap_core()
360 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
369 if ((map->offset >= entry->bound) && in drm_addmap_core()
370 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
376 free(map, DRM_MEM_MAPS); in drm_addmap_core()
380 (unsigned long long)map->offset, map->size); in drm_addmap_core()
389 free(map, DRM_MEM_MAPS); in drm_addmap_core()
392 map->handle = (char *)dev->sg->vaddr + offset; in drm_addmap_core()
393 map->offset += (uintptr_t)dev->sg->vaddr; in drm_addmap_core()
400 align = map->size; in drm_addmap_core()
403 dmah = drm_pci_alloc(dev, map->size, align, BUS_SPACE_MAXADDR); in drm_addmap_core()
405 free(map, DRM_MEM_MAPS); in drm_addmap_core()
408 map->handle = dmah->vaddr; in drm_addmap_core()
409 map->offset = dmah->busaddr; in drm_addmap_core()
410 map->dmah = dmah; in drm_addmap_core()
413 free(map, DRM_MEM_MAPS); in drm_addmap_core()
419 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
420 drm_core_ioremapfree(map, dev); in drm_addmap_core()
421 free(map, DRM_MEM_MAPS); in drm_addmap_core()
424 list->map = map; in drm_addmap_core()
431 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
432 map->offset; in drm_addmap_core()
434 (map->type == _DRM_SHM)); in drm_addmap_core()
436 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
437 drm_core_ioremapfree(map, dev); in drm_addmap_core()
438 free(map, DRM_MEM_MAPS); in drm_addmap_core()
447 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
462 *map_ptr = list->map; in drm_addmap()
482 struct drm_map *map = data; in drm_addmap_ioctl() local
486 if (!(DRM_SUSER(DRM_CURPROC) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_addmap_ioctl()
489 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_addmap_ioctl()
490 map->flags, &maplist); in drm_addmap_ioctl()
496 map->handle = (void *)(unsigned long)maplist->user_token; in drm_addmap_ioctl()
510 int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap_locked() argument
518 if (r_list->map == map) { in drm_rmmap_locked()
532 switch (map->type) { in drm_rmmap_locked()
534 drm_core_ioremapfree(map, dev); in drm_rmmap_locked()
537 if (drm_core_has_MTRR(dev) && map->mtrr >= 0) { in drm_rmmap_locked()
539 retcode = drm_mtrr_del(map->mtrr, map->offset, in drm_rmmap_locked()
540 map->size, DRM_MTRR_WC); in drm_rmmap_locked()
545 free(map->handle, DRM_MEM_MAPS); in drm_rmmap_locked()
558 drm_pci_free(dev, map->dmah); in drm_rmmap_locked()
564 free(map, DRM_MEM_MAPS); in drm_rmmap_locked()
570 int drm_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap() argument
575 ret = drm_rmmap_locked(dev, map); in drm_rmmap()
601 struct drm_local_map *map = NULL; in drm_rmmap_ioctl() local
607 if (r_list->map && in drm_rmmap_ioctl()
609 r_list->map->flags & _DRM_REMOVABLE) { in drm_rmmap_ioctl()
610 map = r_list->map; in drm_rmmap_ioctl()
618 if (list_empty(&dev->maplist) || !map) { in drm_rmmap_ioctl()
624 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_rmmap_ioctl()
629 ret = drm_rmmap_locked(dev, map); in drm_rmmap_ioctl()
1627 struct drm_local_map *map = dev->agp_buffer_map; in drm_mapbufs() local
1630 if (!map) { in drm_mapbufs()
1634 retcode = vm_mmap(&vms->vm_map, &virtual, map->size, in drm_mapbufs()