brintos

brintos / linux-shallow public Read only

0
0
Text · 3.4 KiB · b510a48 Raw
104 lines · c
1/**************************************************************************2 *3 * Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA4 * All Rights Reserved.5 *6 * Permission is hereby granted, free of charge, to any person obtaining a7 * copy of this software and associated documentation files (the8 * "Software"), to deal in the Software without restriction, including9 * without limitation the rights to use, copy, modify, merge, publish,10 * distribute, sub license, and/or sell copies of the Software, and to11 * permit persons to whom the Software is furnished to do so, subject to12 * the following conditions:13 *14 * The above copyright notice and this permission notice (including the15 * next paragraph) shall be included in all copies or substantial portions16 * of the Software.17 *18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR19 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,20 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL21 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,22 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR23 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE24 * USE OR OTHER DEALINGS IN THE SOFTWARE.25 *26 **************************************************************************/27/*28 * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>29 */30 31#ifndef _TTM_PLACEMENT_H_32#define _TTM_PLACEMENT_H_33 34#include <linux/types.h>35 36/*37 * Memory regions for data placement.38 *39 * Buffers placed in TTM_PL_SYSTEM are considered under TTMs control and can40 * be swapped out whenever TTMs thinks it is a good idea.41 * In cases where drivers would like to use TTM_PL_SYSTEM as a valid42 * placement they need to be able to handle the issues that arise due to the43 * above manually.44 *45 * For BO's which reside in system memory but for which the accelerator46 * requires direct access (i.e. their usage needs to be synchronized47 * between the CPU and accelerator via fences) a new, driver private48 * placement that can handle such scenarios is a good idea.49 */50 51#define TTM_PL_SYSTEM           052#define TTM_PL_TT               153#define TTM_PL_VRAM             254#define TTM_PL_PRIV             355 56/*57 * TTM_PL_FLAG_TOPDOWN requests to be placed from the58 * top of the memory area, instead of the bottom.59 */60 61#define TTM_PL_FLAG_CONTIGUOUS  (1 << 0)62#define TTM_PL_FLAG_TOPDOWN     (1 << 1)63 64/* For multihop handling */65#define TTM_PL_FLAG_TEMPORARY   (1 << 2)66 67/* Placement is never used during eviction */68#define TTM_PL_FLAG_DESIRED	(1 << 3)69 70/* Placement is only used during eviction */71#define TTM_PL_FLAG_FALLBACK	(1 << 4)72 73/**74 * struct ttm_place75 *76 * @fpfn:	first valid page frame number to put the object77 * @lpfn:	last valid page frame number to put the object78 * @mem_type:	One of TTM_PL_* where the resource should be allocated from.79 * @flags:	memory domain and caching flags for the object80 *81 * Structure indicating a possible place to put an object.82 */83struct ttm_place {84	unsigned	fpfn;85	unsigned	lpfn;86	uint32_t	mem_type;87	uint32_t	flags;88};89 90/**91 * struct ttm_placement92 *93 * @num_placement:	number of preferred placements94 * @placement:		preferred placements95 *96 * Structure indicating the placement you request for an object.97 */98struct ttm_placement {99	unsigned		num_placement;100	const struct ttm_place	*placement;101};102 103#endif104