Lines Matching refs:map
115 struct drm_local_map *map) in drm_find_matching_map() argument
127 if (!entry->map || in drm_find_matching_map()
128 map->type != entry->map->type || in drm_find_matching_map()
131 switch (map->type) { in drm_find_matching_map()
133 if (map->flags != _DRM_CONTAINS_LOCK) in drm_find_matching_map()
138 if ((entry->map->offset & 0xffffffff) == in drm_find_matching_map()
139 (map->offset & 0xffffffff)) in drm_find_matching_map()
144 if (entry->map->offset == map->offset) in drm_find_matching_map()
212 struct drm_local_map *map; in drm_addmap_core() local
219 map = malloc(sizeof(*map), DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
220 if (!map) in drm_addmap_core()
223 map->offset = offset; in drm_addmap_core()
224 map->size = size; in drm_addmap_core()
225 map->flags = flags; in drm_addmap_core()
226 map->type = type; in drm_addmap_core()
232 if ((map->flags & _DRM_REMOVABLE) && map->type != _DRM_SHM) { in drm_addmap_core()
233 free(map, DRM_MEM_MAPS); in drm_addmap_core()
237 (unsigned long long)map->offset, map->size, map->type); in drm_addmap_core()
243 if (map->type == _DRM_SHM) in drm_addmap_core()
244 map->size = PAGE_ALIGN(map->size); in drm_addmap_core()
251 if ((map->offset & ((resource_size_t)PAGE_MASK)) || (map->size & (PAGE_MASK))) { in drm_addmap_core()
252 free(map, DRM_MEM_MAPS); in drm_addmap_core()
255 map->mtrr = -1; in drm_addmap_core()
256 map->handle = NULL; in drm_addmap_core()
258 switch (map->type) { in drm_addmap_core()
263 if (map->offset + (map->size-1) < map->offset || in drm_addmap_core()
264 map->offset < virt_to_phys(high_memory)) { in drm_addmap_core()
265 kfree(map); in drm_addmap_core()
274 list = drm_find_matching_map(dev, map); in drm_addmap_core()
276 if (list->map->size != map->size) { in drm_addmap_core()
279 map->type, map->size, in drm_addmap_core()
280 list->map->size); in drm_addmap_core()
281 list->map->size = map->size; in drm_addmap_core()
284 free(map, DRM_MEM_MAPS); in drm_addmap_core()
290 if (map->type == _DRM_FRAME_BUFFER || in drm_addmap_core()
291 (map->flags & _DRM_WRITE_COMBINING)) { in drm_addmap_core()
293 map->offset, map->size, in drm_addmap_core()
295 map->mtrr = 1; in drm_addmap_core()
298 if (map->type == _DRM_REGISTERS) { in drm_addmap_core()
299 drm_core_ioremap(map, dev); in drm_addmap_core()
300 if (!map->handle) { in drm_addmap_core()
301 free(map, DRM_MEM_MAPS); in drm_addmap_core()
308 list = drm_find_matching_map(dev, map); in drm_addmap_core()
310 if(list->map->size != map->size) { in drm_addmap_core()
313 map->type, map->size, list->map->size); in drm_addmap_core()
314 list->map->size = map->size; in drm_addmap_core()
317 free(map, DRM_MEM_MAPS); in drm_addmap_core()
321 map->handle = malloc(map->size, DRM_MEM_MAPS, M_NOWAIT); in drm_addmap_core()
323 map->size, drm_order(map->size), map->handle); in drm_addmap_core()
324 if (!map->handle) { in drm_addmap_core()
325 free(map, DRM_MEM_MAPS); in drm_addmap_core()
328 map->offset = (unsigned long)map->handle; in drm_addmap_core()
329 if (map->flags & _DRM_CONTAINS_LOCK) { in drm_addmap_core()
332 free(map->handle, DRM_MEM_MAPS); in drm_addmap_core()
333 free(map, DRM_MEM_MAPS); in drm_addmap_core()
336 dev->sigdata.lock = dev->primary->master->lock.hw_lock = map->handle; /* Pointer to lock */ in drm_addmap_core()
344 free(map, DRM_MEM_MAPS); in drm_addmap_core()
349 map->offset += dev->hose->mem_space->start; in drm_addmap_core()
358 if (map->offset < dev->agp->base || in drm_addmap_core()
359 map->offset > dev->agp->base + in drm_addmap_core()
361 map->offset += dev->agp->base; in drm_addmap_core()
363 map->mtrr = dev->agp->agp_mtrr; /* for getmap */ in drm_addmap_core()
372 if ((map->offset >= entry->bound) && in drm_addmap_core()
373 (map->offset + map->size <= entry->bound + entry->pages * PAGE_SIZE)) { in drm_addmap_core()
379 free(map, DRM_MEM_MAPS); in drm_addmap_core()
383 (unsigned long long)map->offset, map->size); in drm_addmap_core()
392 free(map, DRM_MEM_MAPS); in drm_addmap_core()
395 map->handle = (void *)(dev->sg->vaddr + offset); in drm_addmap_core()
396 map->offset += dev->sg->vaddr; in drm_addmap_core()
403 align = map->size; in drm_addmap_core()
406 dmah = drm_pci_alloc(dev, map->size, align, BUS_SPACE_MAXADDR); in drm_addmap_core()
408 free(map, DRM_MEM_MAPS); in drm_addmap_core()
411 map->handle = dmah->vaddr; in drm_addmap_core()
412 map->offset = dmah->busaddr; in drm_addmap_core()
413 map->dmah = dmah; in drm_addmap_core()
416 free(map, DRM_MEM_MAPS); in drm_addmap_core()
422 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
423 drm_core_ioremapfree(map, dev); in drm_addmap_core()
424 free(map, DRM_MEM_MAPS); in drm_addmap_core()
427 list->map = map; in drm_addmap_core()
434 user_token = (map->type == _DRM_SHM) ? (unsigned long)map->handle : in drm_addmap_core()
435 map->offset; in drm_addmap_core()
437 (map->type == _DRM_SHM)); in drm_addmap_core()
439 if (map->type == _DRM_REGISTERS) in drm_addmap_core()
440 drm_core_ioremapfree(map, dev); in drm_addmap_core()
441 free(map, DRM_MEM_MAPS); in drm_addmap_core()
450 if (!(map->flags & _DRM_DRIVER)) in drm_addmap_core()
465 *map_ptr = list->map; in drm_addmap()
485 struct drm_map *map = data; in drm_addmap_ioctl() local
489 if (!(DRM_SUSER(DRM_CURPROC) || map->type == _DRM_AGP || map->type == _DRM_SHM)) in drm_addmap_ioctl()
492 err = drm_addmap_core(dev, map->offset, map->size, map->type, in drm_addmap_ioctl()
493 map->flags, &maplist); in drm_addmap_ioctl()
499 map->handle = (void *)(unsigned long)maplist->user_token; in drm_addmap_ioctl()
513 int drm_rmmap_locked(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap_locked() argument
521 if (r_list->map == map) { in drm_rmmap_locked()
535 switch (map->type) { in drm_rmmap_locked()
537 drm_core_ioremapfree(map, dev); in drm_rmmap_locked()
540 if (drm_core_has_MTRR(dev) && map->mtrr >= 0) { in drm_rmmap_locked()
542 retcode = drm_mtrr_del(map->mtrr, map->offset, in drm_rmmap_locked()
543 map->size, DRM_MTRR_WC); in drm_rmmap_locked()
548 free(map->handle, DRM_MEM_MAPS); in drm_rmmap_locked()
561 drm_pci_free(dev, map->dmah); in drm_rmmap_locked()
567 free(map, DRM_MEM_MAPS); in drm_rmmap_locked()
573 int drm_rmmap(struct drm_device *dev, struct drm_local_map *map) in drm_rmmap() argument
578 ret = drm_rmmap_locked(dev, map); in drm_rmmap()
604 struct drm_local_map *map = NULL; in drm_rmmap_ioctl() local
610 if (r_list->map && in drm_rmmap_ioctl()
612 r_list->map->flags & _DRM_REMOVABLE) { in drm_rmmap_ioctl()
613 map = r_list->map; in drm_rmmap_ioctl()
621 if (list_empty(&dev->maplist) || !map) { in drm_rmmap_ioctl()
627 if ((map->type == _DRM_REGISTERS) || (map->type == _DRM_FRAME_BUFFER)) { in drm_rmmap_ioctl()
632 ret = drm_rmmap_locked(dev, map); in drm_rmmap_ioctl()
1630 struct drm_local_map *map = dev->agp_buffer_map; in drm_mapbufs() local
1633 if (!map) { in drm_mapbufs()
1637 retcode = vm_mmap(&vms->vm_map, &virtual, map->size, in drm_mapbufs()