On 6/8/26 21:47, Shahyan Soltani wrote: > Move struct amdgpu_sa_manager out of the monolithic header amdgpu.h into > its own dedicated header amdgpu_sa.h. > > This is part of the ongoing effort to reduce the size of amdgpu.h into > their own respective separate headers. > > Signed-off-by: Shahyan Soltani <[email protected]>
I have a similar patch in my pipeline which is just not pushed to amd-staging-drm-next yet: https://patchwork.freedesktop.org/patch/729166/?series=167539&rev=1 My patch is slightly better since it also moves the function declarations over and not just the structures. So I think you can just drop this patch here when mine is pushed. Regards, Christian. > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 32 +------------- > drivers/gpu/drm/amd/amdgpu/amdgpu_sa.h | 61 ++++++++++++++++++++++++++ > 2 files changed, 62 insertions(+), 31 deletions(-) > create mode 100644 drivers/gpu/drm/amd/amdgpu/amdgpu_sa.h > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 5d7bfa59424a..d7d8664854fd 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -111,6 +111,7 @@ > #include "amdgpu_reg_state.h" > #include "amdgpu_userq.h" > #include "amdgpu_eviction_fence.h" > +#include "amdgpu_sa.h" > #include "amdgpu_ip.h" > #if defined(CONFIG_DRM_AMD_ISP) > #include "amdgpu_isp.h" > @@ -386,37 +387,6 @@ struct amdgpu_clock { > uint32_t max_pixel_clock; > }; > > -/* sub-allocation manager, it has to be protected by another lock. > - * By conception this is an helper for other part of the driver > - * like the indirect buffer or semaphore, which both have their > - * locking. > - * > - * Principe is simple, we keep a list of sub allocation in offset > - * order (first entry has offset == 0, last entry has the highest > - * offset). > - * > - * When allocating new object we first check if there is room at > - * the end total_size - (last_object_offset + last_object_size) >= > - * alloc_size. If so we allocate new object there. > - * > - * When there is not enough room at the end, we start waiting for > - * each sub object until we reach object_offset+object_size >= > - * alloc_size, this object then become the sub object we return. > - * > - * Alignment can't be bigger than page size. > - * > - * Hole are not considered for allocation to keep things simple. > - * Assumption is that there won't be hole (all object on same > - * alignment). > - */ > - > -struct amdgpu_sa_manager { > - struct drm_suballoc_manager base; > - struct amdgpu_bo *bo; > - uint64_t gpu_addr; > - void *cpu_ptr; > -}; > - > /* > * IRQS. > */ > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.h > new file mode 100644 > index 000000000000..a878443c8c75 > --- /dev/null > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.h > @@ -0,0 +1,61 @@ > +/* SPDX-License-Identifier: GPL-2.0 OR MIT > + * > + * Copyright 2026 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_SA_H__ > +#define __AMDGPU_SA_H__ > + > +#include <drm/drm_suballoc.h> > +#include <linux/types.h> > + > +struct amdgpu_bo; > + > +/* sub-allocation manager, it has to be protected by another lock. > + * By conception this is an helper for other part of the driver > + * like the indirect buffer or semaphore, which both have their > + * locking. > + * > + * Principe is simple, we keep a list of sub allocation in offset > + * order (first entry has offset == 0, last entry has the highest > + * offset). > + * > + * When allocating new object we first check if there is room at > + * the end total_size - (last_object_offset + last_object_size) >= > + * alloc_size. If so we allocate new object there. > + * > + * When there is not enough room at the end, we start waiting for > + * each sub object until we reach object_offset+object_size >= > + * alloc_size, this object then become the sub object we return. > + * > + * Alignment can't be bigger than page size. > + * > + * Hole are not considered for allocation to keep things simple. > + * Assumption is that there won't be hole (all object on same > + * alignment). > + */ > + > +struct amdgpu_sa_manager { > + struct drm_suballoc_manager base; > + struct amdgpu_bo *bo; > + uint64_t gpu_addr; > + void *cpu_ptr; > +}; > +#endif
