116e87459SChris Wilson /* SPDX-License-Identifier: MIT */
216e87459SChris Wilson /*
316e87459SChris Wilson  * Copyright © 2014-2018 Intel Corporation
416e87459SChris Wilson  */
516e87459SChris Wilson 
616e87459SChris Wilson #ifndef INTEL_GT_BUFFER_POOL_H
716e87459SChris Wilson #define INTEL_GT_BUFFER_POOL_H
816e87459SChris Wilson 
916e87459SChris Wilson #include <linux/types.h>
1016e87459SChris Wilson 
1116e87459SChris Wilson #include "i915_active.h"
1216e87459SChris Wilson #include "intel_gt_buffer_pool_types.h"
1316e87459SChris Wilson 
1416e87459SChris Wilson struct intel_gt;
1516e87459SChris Wilson struct i915_request;
1616e87459SChris Wilson 
1716e87459SChris Wilson struct intel_gt_buffer_pool_node *
188f47c8c3SMatthew Auld intel_gt_get_buffer_pool(struct intel_gt *gt, size_t size,
198f47c8c3SMatthew Auld 			 enum i915_map_type type);
2016e87459SChris Wilson 
21*c9398775SMaarten Lankhorst void intel_gt_buffer_pool_mark_used(struct intel_gt_buffer_pool_node *node);
22*c9398775SMaarten Lankhorst 
2316e87459SChris Wilson static inline int
intel_gt_buffer_pool_mark_active(struct intel_gt_buffer_pool_node * node,struct i915_request * rq)2416e87459SChris Wilson intel_gt_buffer_pool_mark_active(struct intel_gt_buffer_pool_node *node,
2516e87459SChris Wilson 				 struct i915_request *rq)
2616e87459SChris Wilson {
27*c9398775SMaarten Lankhorst 	/* did we call mark_used? */
28*c9398775SMaarten Lankhorst 	GEM_WARN_ON(!node->pinned);
29*c9398775SMaarten Lankhorst 
3016e87459SChris Wilson 	return i915_active_add_request(&node->active, rq);
3116e87459SChris Wilson }
3216e87459SChris Wilson 
3316e87459SChris Wilson static inline void
intel_gt_buffer_pool_put(struct intel_gt_buffer_pool_node * node)3416e87459SChris Wilson intel_gt_buffer_pool_put(struct intel_gt_buffer_pool_node *node)
3516e87459SChris Wilson {
3616e87459SChris Wilson 	i915_active_release(&node->active);
3716e87459SChris Wilson }
3816e87459SChris Wilson 
3916e87459SChris Wilson void intel_gt_init_buffer_pool(struct intel_gt *gt);
4016e87459SChris Wilson void intel_gt_flush_buffer_pool(struct intel_gt *gt);
4116e87459SChris Wilson void intel_gt_fini_buffer_pool(struct intel_gt *gt);
4216e87459SChris Wilson 
4316e87459SChris Wilson #endif /* INTEL_GT_BUFFER_POOL_H */
44