mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Start with the range manager to make the resource object the base class for the allocated nodes. While at it cleanup a lot of the code around that. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20210602100914.46246-2-christian.koenig@amd.com
43 lines
990 B
C
43 lines
990 B
C
/* 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/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->mm_node, struct ttm_range_mgr_node,
|
|
mm_nodes[0]);
|
|
}
|
|
|
|
int ttm_range_man_init(struct ttm_device *bdev,
|
|
unsigned type, bool use_tt,
|
|
unsigned long p_size);
|
|
int ttm_range_man_fini(struct ttm_device *bdev,
|
|
unsigned type);
|
|
|
|
#endif
|