mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/herbert/cryptodev-2.6.git
synced 2026-04-23 05:56:14 -04:00
drm/i915: Use the vma resource as argument for gtt binding / unbinding
When introducing asynchronous unbinding, the vma itself may no longer be alive when the actual binding or unbinding takes place. Update the gtt i915_vma_ops accordingly to take a struct i915_vma_resource instead of a struct i915_vma for the bind_vma() and unbind_vma() ops. Similarly change the insert_entries() op for struct i915_address_space. Replace a couple of i915_vma_snapshot members with their newly introduced i915_vma_resource counterparts, since they have the same lifetime. Also make sure to avoid changing the struct i915_vma_flags (in particular the bind flags) async. That should now only be done sync under the vm mutex. v2: - Update the vma_res::bound_flags when binding to the aliased ggtt v6: - Remove I915_VMA_ALLOC_BIT (Matthew Auld) - Change some members of struct i915_vma_resource from unsigned long to u64 (Matthew Auld) v7: - Fix vma resource size parameters to be u64 rather than unsigned long (Matthew Auld) Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220110172219.107131-3-thomas.hellstrom@linux.intel.com
This commit is contained in:
@@ -339,12 +339,6 @@ void __iomem *i915_vma_pin_iomap(struct i915_vma *vma);
|
||||
*/
|
||||
void i915_vma_unpin_iomap(struct i915_vma *vma);
|
||||
|
||||
static inline struct page *i915_vma_first_page(struct i915_vma *vma)
|
||||
{
|
||||
GEM_BUG_ON(!vma->pages);
|
||||
return sg_page(vma->pages->sgl);
|
||||
}
|
||||
|
||||
/**
|
||||
* i915_vma_pin_fence - pin fencing state
|
||||
* @vma: vma to pin fencing for
|
||||
@@ -445,6 +439,11 @@ i915_vma_get_current_resource(struct i915_vma *vma)
|
||||
return i915_vma_resource_get(vma->resource);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
|
||||
void i915_vma_resource_init_from_vma(struct i915_vma_resource *vma_res,
|
||||
struct i915_vma *vma);
|
||||
#endif
|
||||
|
||||
void i915_vma_module_exit(void);
|
||||
int i915_vma_module_init(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user