Am 18.08.2016 um 11:18 schrieb Flora Cui: > Change-Id: I425a7a8a2126ace85f1ea8a9b91333911692c794 > Signed-off-by: Flora Cui <Flora.Cui at amd.com> > Reviewed-by: Michel Dänzer <michel.daenzer at amd.com> Patch is Reviewed-by: Christian König <christian.koenig at amd.com>. A nice cleanup, Christian. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 45 +------------------ > drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h | 8 ---- > drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h | 78 +++++++++++++++++++++++++++++++++ > 3 files changed, 80 insertions(+), 51 deletions(-) > create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index a55eb6f..00b810f 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -51,6 +51,7 @@ > #include "amdgpu_ih.h" > #include "amdgpu_irq.h" > #include "amdgpu_ucode.h" > +#include "amdgpu_ttm.h" > #include "amdgpu_gds.h" > #include "amdgpu_acp.h" > #include "amdgpu_dm.h" > @@ -398,51 +399,9 @@ int amdgpu_fence_wait_empty(struct amdgpu_ring *ring); > unsigned amdgpu_fence_count_emitted(struct amdgpu_ring *ring); > > /* > - * TTM. > + * BO. > */ > > -#define AMDGPU_TTM_LRU_SIZE 20 > - > -struct amdgpu_mman_lru { > - struct list_head *lru[TTM_NUM_MEM_TYPES]; > - struct list_head *swap_lru; > -}; > - > -struct amdgpu_mman { > - struct ttm_bo_global_ref bo_global_ref; > - struct drm_global_reference mem_global_ref; > - struct ttm_bo_device bdev; > - bool mem_global_referenced; > - bool initialized; > - > -#if defined(CONFIG_DEBUG_FS) > - struct dentry *vram; > - struct dentry *gtt; > -#endif > - > - /* buffer handling */ > - const struct amdgpu_buffer_funcs *buffer_funcs; > - struct amdgpu_ring *buffer_funcs_ring; > - /* Scheduler entity for buffer moves */ > - struct amd_sched_entity entity; > - > - /* custom LRU management */ > - struct amdgpu_mman_lru log2_size[AMDGPU_TTM_LRU_SIZE]; > -}; > - > -int amdgpu_copy_buffer(struct amdgpu_ring *ring, > - uint64_t src_offset, > - uint64_t dst_offset, > - uint32_t byte_count, > - struct reservation_object *resv, > - struct fence **fence); > -int amdgpu_fill_buffer(struct amdgpu_bo *bo, > - uint32_t src_data, > - struct reservation_object *resv, > - struct fence **fence); > - > -int amdgpu_mmap(struct file *filp, struct vm_area_struct *vma); > - > struct amdgpu_bo_list_entry { > struct amdgpu_bo *robj; > struct ttm_validate_buffer tv; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h > index 503d540..e73728d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gds.h > @@ -31,14 +31,6 @@ > #define AMDGPU_GWS_SHIFT PAGE_SHIFT > #define AMDGPU_OA_SHIFT PAGE_SHIFT > > -#define AMDGPU_PL_GDS TTM_PL_PRIV0 > -#define AMDGPU_PL_GWS TTM_PL_PRIV1 > -#define AMDGPU_PL_OA TTM_PL_PRIV2 > - > -#define AMDGPU_PL_FLAG_GDS TTM_PL_FLAG_PRIV0 > -#define AMDGPU_PL_FLAG_GWS TTM_PL_FLAG_PRIV1 > -#define AMDGPU_PL_FLAG_OA TTM_PL_FLAG_PRIV2 > - > struct amdgpu_ring; > struct amdgpu_bo; > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > new file mode 100644 > index 0000000..8927e0e > --- /dev/null > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.h > @@ -0,0 +1,78 @@ > +/* > + * Copyright 2016 Advanced Micro Devices, Inc. > + * > + * Permission is hereby granted, free of charge, to any person obtaining a > + * copy of this software and associated documentation files (the "Software"), > + * to deal in the Software without restriction, including without limitation > + * the rights to use, copy, modify, merge, publish, distribute, sublicense, > + * and/or sell copies of the Software, and to permit persons to whom the > + * Software is furnished to do so, subject to the following conditions: > + * > + * The above copyright notice and this permission notice shall be included in > + * all copies or substantial portions of the Software. > + * > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL > + * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR > + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, > + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > + * OTHER DEALINGS IN THE SOFTWARE. > + * > + */ > + > +#ifndef __AMDGPU_TTM_H__ > +#define __AMDGPU_TTM_H__ > + > +#include "gpu_scheduler.h" > + > +#define AMDGPU_PL_GDS TTM_PL_PRIV0 > +#define AMDGPU_PL_GWS TTM_PL_PRIV1 > +#define AMDGPU_PL_OA TTM_PL_PRIV2 > + > +#define AMDGPU_PL_FLAG_GDS TTM_PL_FLAG_PRIV0 > +#define AMDGPU_PL_FLAG_GWS TTM_PL_FLAG_PRIV1 > +#define AMDGPU_PL_FLAG_OA TTM_PL_FLAG_PRIV2 > + > +#define AMDGPU_TTM_LRU_SIZE 20 > + > +struct amdgpu_mman_lru { > + struct list_head *lru[TTM_NUM_MEM_TYPES]; > + struct list_head *swap_lru; > +}; > + > +struct amdgpu_mman { > + struct ttm_bo_global_ref bo_global_ref; > + struct drm_global_reference mem_global_ref; > + struct ttm_bo_device bdev; > + bool mem_global_referenced; > + bool initialized; > + > +#if defined(CONFIG_DEBUG_FS) > + struct dentry *vram; > + struct dentry *gtt; > +#endif > + > + /* buffer handling */ > + const struct amdgpu_buffer_funcs *buffer_funcs; > + struct amdgpu_ring *buffer_funcs_ring; > + /* Scheduler entity for buffer moves */ > + struct amd_sched_entity entity; > + > + /* custom LRU management */ > + struct amdgpu_mman_lru log2_size[AMDGPU_TTM_LRU_SIZE]; > +}; > + > +int amdgpu_copy_buffer(struct amdgpu_ring *ring, > + uint64_t src_offset, > + uint64_t dst_offset, > + uint32_t byte_count, > + struct reservation_object *resv, > + struct fence **fence); > +int amdgpu_fill_buffer(struct amdgpu_bo *bo, > + uint32_t src_data, > + struct reservation_object *resv, > + struct fence **fence); > + > +int amdgpu_mmap(struct file *filp, struct vm_area_struct *vma); > +#endif