File: ttm_range_manager.h

package info (click to toggle)
linux 6.19.2-1~exp1
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 1,759,612 kB
  • sloc: ansic: 27,004,852; asm: 273,402; sh: 151,313; python: 81,277; makefile: 58,544; perl: 34,311; xml: 21,064; cpp: 5,984; yacc: 4,841; lex: 2,901; awk: 1,707; sed: 30; ruby: 25
file content (56 lines) | stat: -rw-r--r-- 1,521 bytes parent folder | download | duplicates (27)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* SPDX-License-Identifier: GPL-2.0 OR MIT */

#ifndef _TTM_RANGE_MANAGER_H_
#define _TTM_RANGE_MANAGER_H_

#include <drm/ttm/ttm_resource.h>
#include <drm/ttm/ttm_device.h>
#include <drm/drm_mm.h>

/**
 * struct ttm_range_mgr_node
 *
 * @base: base clase we extend
 * @mm_nodes: MM nodes, usually 1
 *
 * Extending the ttm_resource object to manage an address space allocation with
 * one or more drm_mm_nodes.
 */
struct ttm_range_mgr_node {
	struct ttm_resource base;
	struct drm_mm_node mm_nodes[];
};

/**
 * to_ttm_range_mgr_node
 *
 * @res: the resource to upcast
 *
 * Upcast the ttm_resource object into a ttm_range_mgr_node object.
 */
static inline struct ttm_range_mgr_node *
to_ttm_range_mgr_node(struct ttm_resource *res)
{
	return container_of(res, struct ttm_range_mgr_node, base);
}

int ttm_range_man_init_nocheck(struct ttm_device *bdev,
		       unsigned type, bool use_tt,
		       unsigned long p_size);
int ttm_range_man_fini_nocheck(struct ttm_device *bdev,
		       unsigned type);
static __always_inline int ttm_range_man_init(struct ttm_device *bdev,
		       unsigned int type, bool use_tt,
		       unsigned long p_size)
{
	BUILD_BUG_ON(__builtin_constant_p(type) && type >= TTM_NUM_MEM_TYPES);
	return ttm_range_man_init_nocheck(bdev, type, use_tt, p_size);
}

static __always_inline int ttm_range_man_fini(struct ttm_device *bdev,
		       unsigned int type)
{
	BUILD_BUG_ON(__builtin_constant_p(type) && type >= TTM_NUM_MEM_TYPES);
	return ttm_range_man_fini_nocheck(bdev, type);
}
#endif