1145132Sanholt/*- 2145132Sanholt *Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. 3145132Sanholt * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. 4145132Sanholt * All Rights Reserved. 5145132Sanholt * 6145132Sanholt * Permission is hereby granted, free of charge, to any person obtaining a 7145132Sanholt * copy of this software and associated documentation files (the "Software"), 8145132Sanholt * to deal in the Software without restriction, including without limitation 9145132Sanholt * the rights to use, copy, modify, merge, publish, distribute, sublicense, 10145132Sanholt * and/or sell copies of the Software, and to permit persons to whom the 11145132Sanholt * Software is furnished to do so, subject to the following conditions: 12145132Sanholt * 13145132Sanholt * The above copyright notice and this permission notice (including the next 14145132Sanholt * paragraph) shall be included in all copies or substantial portions of the 15145132Sanholt * Software. 16145132Sanholt * 17145132Sanholt * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18145132Sanholt * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19145132Sanholt * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20145132Sanholt * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 21145132Sanholt * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 22145132Sanholt * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 23145132Sanholt * OTHER DEALINGS IN THE SOFTWARE. 24145132Sanholt * 25145132Sanholt * Authors: 26145132Sanholt * Rickard E. (Rik) Faith <faith@valinux.com> 27145132Sanholt * Gareth Hughes <gareth@valinux.com> 28145132Sanholt * 29145132Sanholt */ 30145132Sanholt 31152909Sanholt#include <sys/cdefs.h> 32152909Sanholt__FBSDID("$FreeBSD: releng/10.3/sys/dev/drm/drm_memory.c 215367 2010-11-16 03:43:06Z nwhitehorn $"); 33152909Sanholt 34182080Srnoland/** @file drm_memory.c 35182080Srnoland * Wrappers for kernel memory allocation routines, and MTRR management support. 36182080Srnoland * 37182080Srnoland * This file previously implemented a memory consumption tracking system using 38182080Srnoland * the "area" argument for various different types of allocations, but that 39182080Srnoland * has been stripped out for now. 40182080Srnoland */ 41182080Srnoland 42145132Sanholt#include "dev/drm/drmP.h" 43145132Sanholt 44183833SrnolandMALLOC_DEFINE(DRM_MEM_DMA, "drm_dma", "DRM DMA Data Structures"); 45183833SrnolandMALLOC_DEFINE(DRM_MEM_SAREA, "drm_sarea", "DRM SAREA Data Structures"); 46183833SrnolandMALLOC_DEFINE(DRM_MEM_DRIVER, "drm_driver", "DRM DRIVER Data Structures"); 47183833SrnolandMALLOC_DEFINE(DRM_MEM_MAGIC, "drm_magic", "DRM MAGIC Data Structures"); 48183833SrnolandMALLOC_DEFINE(DRM_MEM_IOCTLS, "drm_ioctls", "DRM IOCTL Data Structures"); 49183833SrnolandMALLOC_DEFINE(DRM_MEM_MAPS, "drm_maps", "DRM MAP Data Structures"); 50183833SrnolandMALLOC_DEFINE(DRM_MEM_BUFS, "drm_bufs", "DRM BUFFER Data Structures"); 51183833SrnolandMALLOC_DEFINE(DRM_MEM_SEGS, "drm_segs", "DRM SEGMENTS Data Structures"); 52183833SrnolandMALLOC_DEFINE(DRM_MEM_PAGES, "drm_pages", "DRM PAGES Data Structures"); 53183833SrnolandMALLOC_DEFINE(DRM_MEM_FILES, "drm_files", "DRM FILE Data Structures"); 54183833SrnolandMALLOC_DEFINE(DRM_MEM_QUEUES, "drm_queues", "DRM QUEUE Data Structures"); 55183833SrnolandMALLOC_DEFINE(DRM_MEM_CMDS, "drm_cmds", "DRM COMMAND Data Structures"); 56183833SrnolandMALLOC_DEFINE(DRM_MEM_MAPPINGS, "drm_mapping", "DRM MAPPING Data Structures"); 57183833SrnolandMALLOC_DEFINE(DRM_MEM_BUFLISTS, "drm_buflists", "DRM BUFLISTS Data Structures"); 58183833SrnolandMALLOC_DEFINE(DRM_MEM_AGPLISTS, "drm_agplists", "DRM AGPLISTS Data Structures"); 59183833SrnolandMALLOC_DEFINE(DRM_MEM_CTXBITMAP, "drm_ctxbitmap", 60183833Srnoland "DRM CTXBITMAP Data Structures"); 61183833SrnolandMALLOC_DEFINE(DRM_MEM_SGLISTS, "drm_sglists", "DRM SGLISTS Data Structures"); 62183833SrnolandMALLOC_DEFINE(DRM_MEM_DRAWABLE, "drm_drawable", "DRM DRAWABLE Data Structures"); 63203287SrnolandMALLOC_DEFINE(DRM_MEM_MM, "drm_sman", "DRM MEMORY MANAGER Data Structures"); 64203287SrnolandMALLOC_DEFINE(DRM_MEM_HASHTAB, "drm_hashtab", "DRM HASHTABLE Data Structures"); 65145132Sanholt 66145132Sanholtvoid drm_mem_init(void) 67145132Sanholt{ 68145132Sanholt} 69145132Sanholt 70145132Sanholtvoid drm_mem_uninit(void) 71145132Sanholt{ 72145132Sanholt} 73145132Sanholt 74183573Srnolandvoid *drm_ioremap_wc(struct drm_device *dev, drm_local_map_t *map) 75183573Srnoland{ 76215367Snwhitehorn return pmap_mapdev_attr(map->offset, map->size, VM_MEMATTR_WRITE_COMBINING); 77183573Srnoland} 78183573Srnoland 79182080Srnolandvoid *drm_ioremap(struct drm_device *dev, drm_local_map_t *map) 80145132Sanholt{ 81145132Sanholt return pmap_mapdev(map->offset, map->size); 82145132Sanholt} 83145132Sanholt 84145132Sanholtvoid drm_ioremapfree(drm_local_map_t *map) 85145132Sanholt{ 86207066Srnoland pmap_unmapdev((vm_offset_t) map->virtual, map->size); 87145132Sanholt} 88145132Sanholt 89145132Sanholtint 90145132Sanholtdrm_mtrr_add(unsigned long offset, size_t size, int flags) 91145132Sanholt{ 92145132Sanholt int act; 93145132Sanholt struct mem_range_desc mrdesc; 94145132Sanholt 95145132Sanholt mrdesc.mr_base = offset; 96145132Sanholt mrdesc.mr_len = size; 97145132Sanholt mrdesc.mr_flags = flags; 98145132Sanholt act = MEMRANGE_SET_UPDATE; 99145132Sanholt strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner)); 100145132Sanholt return mem_range_attr_set(&mrdesc, &act); 101145132Sanholt} 102145132Sanholt 103145132Sanholtint 104152909Sanholtdrm_mtrr_del(int __unused handle, unsigned long offset, size_t size, int flags) 105145132Sanholt{ 106145132Sanholt int act; 107145132Sanholt struct mem_range_desc mrdesc; 108145132Sanholt 109145132Sanholt mrdesc.mr_base = offset; 110145132Sanholt mrdesc.mr_len = size; 111145132Sanholt mrdesc.mr_flags = flags; 112145132Sanholt act = MEMRANGE_SET_REMOVE; 113145132Sanholt strlcpy(mrdesc.mr_owner, "drm", sizeof(mrdesc.mr_owner)); 114145132Sanholt return mem_range_attr_set(&mrdesc, &act); 115145132Sanholt} 116