#include "amdgpu_amdkfd.h"
#include "amd_pcie.h"
#include "amd_shared.h"
#include "amdgpu.h"
#include "amdgpu_gfx.h"
#include "amdgpu_dma_buf.h"
#include <drm/ttm/ttm_tt.h>
#include <linux/module.h>
#include <linux/dma-buf.h>
#include "amdgpu_xgmi.h"
#include <uapi/linux/kfd_ioctl.h>
#include "amdgpu_ras.h"
#include "amdgpu_umc.h"
#include "amdgpu_reset.h"
uint64_t amdgpu_amdkfd_total_mem_size;
static bool kfd_initialized;
int amdgpu_amdkfd_init(void)
{ … }
void amdgpu_amdkfd_fini(void)
{ … }
void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
{ … }
static void amdgpu_doorbell_get_kfd_info(struct amdgpu_device *adev,
phys_addr_t *aperture_base,
size_t *aperture_size,
size_t *start_offset)
{ … }
static void amdgpu_amdkfd_reset_work(struct work_struct *work)
{ … }
static const struct drm_client_funcs kfd_client_funcs = …;
int amdgpu_amdkfd_drm_client_create(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_device_fini_sw(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_interrupt(struct amdgpu_device *adev,
const void *ih_ring_entry)
{ … }
void amdgpu_amdkfd_suspend(struct amdgpu_device *adev, bool run_pm)
{ … }
int amdgpu_amdkfd_resume(struct amdgpu_device *adev, bool run_pm)
{ … }
int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev,
struct amdgpu_reset_context *reset_context)
{ … }
int amdgpu_amdkfd_post_reset(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_gpu_reset(struct amdgpu_device *adev)
{ … }
int amdgpu_amdkfd_alloc_gtt_mem(struct amdgpu_device *adev, size_t size,
void **mem_obj, uint64_t *gpu_addr,
void **cpu_ptr, bool cp_mqd_gfx9)
{ … }
void amdgpu_amdkfd_free_gtt_mem(struct amdgpu_device *adev, void *mem_obj)
{ … }
int amdgpu_amdkfd_alloc_gws(struct amdgpu_device *adev, size_t size,
void **mem_obj)
{ … }
void amdgpu_amdkfd_free_gws(struct amdgpu_device *adev, void *mem_obj)
{ … }
uint32_t amdgpu_amdkfd_get_fw_version(struct amdgpu_device *adev,
enum kgd_engine_type type)
{ … }
void amdgpu_amdkfd_get_local_mem_info(struct amdgpu_device *adev,
struct kfd_local_mem_info *mem_info,
struct amdgpu_xcp *xcp)
{ … }
uint64_t amdgpu_amdkfd_get_gpu_clock_counter(struct amdgpu_device *adev)
{ … }
uint32_t amdgpu_amdkfd_get_max_engine_clock_in_mhz(struct amdgpu_device *adev)
{ … }
int amdgpu_amdkfd_get_dmabuf_info(struct amdgpu_device *adev, int dma_buf_fd,
struct amdgpu_device **dmabuf_adev,
uint64_t *bo_size, void *metadata_buffer,
size_t buffer_size, uint32_t *metadata_size,
uint32_t *flags, int8_t *xcp_id)
{ … }
uint8_t amdgpu_amdkfd_get_xgmi_hops_count(struct amdgpu_device *dst,
struct amdgpu_device *src)
{ … }
int amdgpu_amdkfd_get_xgmi_bandwidth_mbytes(struct amdgpu_device *dst,
struct amdgpu_device *src,
bool is_min)
{ … }
int amdgpu_amdkfd_get_pcie_bandwidth_mbytes(struct amdgpu_device *adev, bool is_min)
{ … }
int amdgpu_amdkfd_submit_ib(struct amdgpu_device *adev,
enum kgd_engine_type engine,
uint32_t vmid, uint64_t gpu_addr,
uint32_t *ib_cmd, uint32_t ib_len)
{ … }
void amdgpu_amdkfd_set_compute_idle(struct amdgpu_device *adev, bool idle)
{ … }
bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid)
{ … }
bool amdgpu_amdkfd_have_atomics_support(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_debug_mem_fence(struct amdgpu_device *adev)
{ … }
bool amdgpu_amdkfd_is_fed(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_ras_pasid_poison_consumption_handler(struct amdgpu_device *adev,
enum amdgpu_ras_block block, uint16_t pasid,
pasid_notify pasid_fn, void *data, uint32_t reset)
{ … }
void amdgpu_amdkfd_ras_poison_consumption_handler(struct amdgpu_device *adev,
enum amdgpu_ras_block block, uint32_t reset)
{ … }
int amdgpu_amdkfd_send_close_event_drain_irq(struct amdgpu_device *adev,
uint32_t *payload)
{ … }
bool amdgpu_amdkfd_ras_query_utcl2_poison_status(struct amdgpu_device *adev,
int hub_inst, int hub_type)
{ … }
int amdgpu_amdkfd_check_and_lock_kfd(struct amdgpu_device *adev)
{ … }
void amdgpu_amdkfd_unlock_kfd(struct amdgpu_device *adev)
{ … }
u64 amdgpu_amdkfd_xcp_memory_size(struct amdgpu_device *adev, int xcp_id)
{ … }
int amdgpu_amdkfd_unmap_hiq(struct amdgpu_device *adev, u32 doorbell_off,
u32 inst)
{ … }