Lines Matching refs:map
113 struct drm_local_map *map) in drm_find_matching_map() argument
125 if (!entry->map || in drm_find_matching_map()
126 map->type != entry->map->type || in drm_find_matching_map()
129 switch (map->type) { in drm_find_matching_map()
131 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
136 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
137 (map->offset & 0xffffffff)) in drm_find_matching_map()
142 if (entry->map->offset == map->offset) in drm_find_matching_map()
210 struct drm_local_map *map; in drm_addmap_core() local
217 map = malloc(sizeof(*map), DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
218 if (!map) in drm_addmap_core()
221 map->offset = offset; in drm_addmap_core()
222 map->size = size; in drm_addmap_core()
223 map->flags = flags; in drm_addmap_core()
224 map->type = type; in drm_addmap_core()
230 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
231 free(map, DRM_MEM_MAPS); in drm_addmap_core()
235 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
241 if (map->type == _DRM_SHM) in drm_addmap_core()
242 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
249 if ((map->offset & ((resource_size_t)PAGE_MASK)) || (map->size & (PAGE_MASK))) { in drm_addmap_core()
250 free(map, DRM_MEM_MAPS); in drm_addmap_core()
253 map->mtrr = -1; in drm_addmap_core()
254 map->handle = NULL; in drm_addmap_core()
256 switch (map->type) { in drm_addmap_core()
261 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
262 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
263 kfree(map); in drm_addmap_core()
272 list = drm_find_matching_map(dev, map); in drm_addmap_core()
274 if (list->map->size != map->size) { in drm_addmap_core()
277 map->type, map->size, in drm_addmap_core()
278 list->map->size); in drm_addmap_core()
279 list->map->size = map->size; in drm_addmap_core()
282 free(map, DRM_MEM_MAPS); in drm_addmap_core()
288 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
289 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
291 map->offset, map->size, in drm_addmap_core()
293 map->mtrr = 1; in drm_addmap_core()
296 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
297 drm_core_ioremap(map, dev); in drm_addmap_core()
298 if (!map->handle) { in drm_addmap_core()
299 free(map, DRM_MEM_MAPS); in drm_addmap_core()
306 list = drm_find_matching_map(dev, map); in drm_addmap_core()
308 if(list->map->size != map->size) { in drm_addmap_core()
311 map->type, map->size, list->map->size); in drm_addmap_core()
312 list->map->size = map->size; in drm_addmap_core()
315 free(map, DRM_MEM_MAPS); in drm_addmap_core()
319 map->handle = malloc(map->size, DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
321 map->size, drm_order(map->size), map->handle); in drm_addmap_core()
322 if (!map->handle) { in drm_addmap_core()
323 free(map, DRM_MEM_MAPS); in drm_addmap_core()
326 map->offset = (unsigned long)map->handle; in drm_addmap_core()
327 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
330 free(map->handle, DRM_MEM_MAPS); in drm_addmap_core()
331 free(map, DRM_MEM_MAPS); in drm_addmap_core()
334 dev->sigdata.lock = dev->primary->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
342 free(map, DRM_MEM_MAPS); in drm_addmap_core()
347 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
356 if (map->offset < dev->agp->base || in drm_addmap_core()
357 map->offset > dev->agp->base + in drm_addmap_core()
359 map->offset += dev->agp->base; in drm_addmap_core()
361 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
370 if ((map->offset >= entry->bound) && in drm_addmap_core()
371 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
377 free(map, DRM_MEM_MAPS); in drm_addmap_core()
381 (unsigned long long)map->offset, map->size); in drm_addmap_core()
390 free(map, DRM_MEM_MAPS); in drm_addmap_core()
393 map->handle = (char *)dev->sg->vaddr + offset; in drm_addmap_core()
394 map->offset += (uintptr_t)dev->sg->vaddr; in drm_addmap_core()
401 align = map->size; in drm_addmap_core()
404 dmah = drm_pci_alloc(dev, map->size, align, BUS_SPACE_MAXADDR); in drm_addmap_core()
406 free(map, DRM_MEM_MAPS); in drm_addmap_core()
409 map->handle = dmah->vaddr; in drm_addmap_core()
410 map->offset = dmah->busaddr; in drm_addmap_core()
411 map->dmah = dmah; in drm_addmap_core()
414 free(map, DRM_MEM_MAPS); in drm_addmap_core()
420 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
421 drm_core_ioremapfree(map, dev); in drm_addmap_core()
422 free(map, DRM_MEM_MAPS); in drm_addmap_core()
425 list->map = map; in drm_addmap_core()
432 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
433 map->offset; in drm_addmap_core()
435 (map->type == _DRM_SHM)); in drm_addmap_core()
437 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
438 drm_core_ioremapfree(map, dev); in drm_addmap_core()
439 free(map, DRM_MEM_MAPS); in drm_addmap_core()
448 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
463 *map_ptr = list->map; in drm_addmap()
483 struct drm_map *map = data; in drm_addmap_ioctl() local
487 if (!(DRM_SUSER(DRM_CURPROC) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_addmap_ioctl()
490 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_addmap_ioctl()
491 map->flags, &maplist); in drm_addmap_ioctl()
497 map->handle = (void *)(unsigned long)maplist->user_token; in drm_addmap_ioctl()
511 int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap_locked() argument
519 if (r_list->map == map) { in drm_rmmap_locked()
533 switch (map->type) { in drm_rmmap_locked()
535 drm_core_ioremapfree(map, dev); in drm_rmmap_locked()
538 if (drm_core_has_MTRR(dev) && map->mtrr >= 0) { in drm_rmmap_locked()
540 retcode = drm_mtrr_del(map->mtrr, map->offset, in drm_rmmap_locked()
541 map->size, DRM_MTRR_WC); in drm_rmmap_locked()
546 free(map->handle, DRM_MEM_MAPS); in drm_rmmap_locked()
559 drm_pci_free(dev, map->dmah); in drm_rmmap_locked()
565 free(map, DRM_MEM_MAPS); in drm_rmmap_locked()
571 int drm_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap() argument
576 ret = drm_rmmap_locked(dev, map); in drm_rmmap()
602 struct drm_local_map *map = NULL; in drm_rmmap_ioctl() local
608 if (r_list->map && in drm_rmmap_ioctl()
610 r_list->map->flags & _DRM_REMOVABLE) { in drm_rmmap_ioctl()
611 map = r_list->map; in drm_rmmap_ioctl()
619 if (list_empty(&dev->maplist) || !map) { in drm_rmmap_ioctl()
625 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_rmmap_ioctl()
630 ret = drm_rmmap_locked(dev, map); in drm_rmmap_ioctl()
1628 struct drm_local_map *map = dev->agp_buffer_map; in drm_mapbufs() local
1631 if (!map) { in drm_mapbufs()
1635 retcode = vm_mmap(&vms->vm_map, &virtual, map->size, in drm_mapbufs()