• Oded Gabbay's avatar
    drm/radeon: Add radeon <--> amdkfd interface · e28740ec
    Oded Gabbay authored
    This patch adds the interface between the radeon driver and the amdkfd driver.
    The interface implementation is contained in radeon_kfd.c and radeon_kfd.h.
    
    The interface itself is represented by a pointer to struct
    kfd_dev. The pointer is located inside radeon_device structure.
    
    All the register accesses that amdkfd need are done using this interface. This
    allows us to avoid direct register accesses in amdkfd proper,  while also
    avoiding locking between amdkfd and radeon.
    
    The single exception is the doorbells that are used in both of the drivers.
    However, because they are located in separate pci bar pages, the danger of
    sharing registers between the drivers is minimal.
    
    Having said that, we are planning to move the doorbells as well to radeon.
    
    v3:
    
    Add interface for sa manager init and fini. The init function will allocate a
    buffer on system memory and pin it to the GART address space via the radeon sa
    manager.
    
    All mappings of buffers to GART address space are done via the radeon sa
    manager. The interface of allocate memory will use the radeon sa manager to sub
    allocate from the single buffer that was allocated during the init function.
    
    Change lower_32/upper_32 calls to use linux macros
    
    Add documentation for the interface
    
    v4:
    
    Change ptr field type in kgd_mem from uint32_t* to void* to match to type that
    is returned by radeon_sa_bo_cpu_addr
    
    v5:
    
    Change format of mqd structure to work with latest KV firmware
    Add support for AQL queues creation to enable working with open-source HSA
    runtime.
    Move generic kfd-->kgd interface and other generic kgd definitions to a generic
    header file that will be used by AMD's radeon and amdgpu drivers
    Signed-off-by: default avatarOded Gabbay <oded.gabbay@amd.com>
    e28740ec
radeon_kfd.c 14.8 KB