Proposal to merge KFD into amdgpu
Michel Dänzer
michel at daenzer.net
Thu Jul 5 13:49:14 UTC 2018
On 2018-07-04 11:36 PM, Felix Kuehling wrote:
> Since KFD is only supported by a single GPU driver now (amdgpu), it
> makes sense to merge the two. This has been raised on the amd-gfx list
> before and I've been putting it off to avoid more churn while I was
> working on upstreaming KFD. Now seems a good time to pick this up again.
>
> At this stage there are some things that I don't expect to change
> significantly:
>
> * Directory structure
> * KFD function naming conventions
> * KFD device and sysfs interfaces
>
> This is a rough overview of the changes I have in mind. We should be
> able to implement these step-by-step and minimize disruption:
>
> 1. Change the build system to build KFD into amdgpu.ko
>
> This should make KFD similar to DAL or powerplay. It's still a mostly
> separate code base and Makefile with its own directory, but gets linked
> into amdgpu.ko.
>
> In the kernel configuration HSA_AMD would become a boolean option under
> DRM_AMDGPU that controls whether KFD functionality gets built into amdgpu.
>
> Any code inside #if defined(CONFIG_HSA_AMD_MODULE) can be removed.
>
> 2. Simplify the kfd2kgd and kgd2kfg interfaces
>
> Function pointers in struct kgd2kfd_calls are no longer needed. These
> functions can be called directly from amdgpu.
>
> Hardware-independent function pointers in kfd2kgd_calls are no longer
> needed. These function can be called directly from amdkfd. Some of the
> function pointers in kfd2kgd_calls are used for hardware abstraction
> with different implementations for each GFX HW generation. These will
> need to remain function pointers.
>
> At some later stage, the HW-specific functions could be moved into
> gfx_v*.c and the function pointers added to struct amdgpu_gfx. But at
> this stage I think I'd leave them where they are.
>
> 3. Reduce duplicate tracking of device and BO structures
>
> Currently KFD and AMDGPU pretend to not know each other's data
> structures. If both are in the same module, we could allow KFD to access
> some amdgpu structures directly (e.g. amdgpu_device and amdgpu_bo). This
> way some of the duplicate tracking of devices and buffer objects could
> be eliminated.
>
> This may present opportunities to simplify some functionality that's
> currently split across both modules, such as suspend/resume, memory
> management and evictions.
>
> Some interfaces that just query information from amdgpu could be removed
> if KFD can access that information directly (e.g. firmware versions, CU
> info, ...).
>
> Please let me know if you have any objections, suggestions, ideas ...
Thumbs up from me! :)
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
More information about the amd-gfx
mailing list