Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 01c097db authored by Felix Kuehling's avatar Felix Kuehling Committed by Oded Gabbay
Browse files

drm/amdgpu: Add kfd2kgd.set_compute_idle interface



This allows automatic switching to the compute power profile depending
on compute activity.

Signed-off-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: default avatarEric Huang <JinHuiEric.Huang@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarOded Gabbay <oded.gabbay@gmail.com>
parent 39e7f331
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -488,6 +488,14 @@ int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, enum kgd_engine_type engine,
	return ret;
}

void amdgpu_amdkfd_set_compute_idle(struct kgd_dev *kgd, bool idle)
{
	struct amdgpu_device *adev = (struct amdgpu_device *)kgd;

	amdgpu_dpm_switch_power_profile(adev,
					PP_SMC_POWER_PROFILE_COMPUTE, !idle);
}

bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid)
{
	if (adev->kfd) {
+1 −0
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ int amdgpu_amdkfd_evict_userptr(struct kgd_mem *mem, struct mm_struct *mm);
int amdgpu_amdkfd_submit_ib(struct kgd_dev *kgd, 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 kgd_dev *kgd, bool idle);

struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void);
struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void);
+2 −1
Original line number Diff line number Diff line
@@ -219,7 +219,8 @@ static const struct kfd2kgd_calls kfd2kgd = {
	.submit_ib = amdgpu_amdkfd_submit_ib,
	.get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info,
	.read_vmid_from_vmfault_reg = read_vmid_from_vmfault_reg,
	.gpu_recover = amdgpu_amdkfd_gpu_reset
	.gpu_recover = amdgpu_amdkfd_gpu_reset,
	.set_compute_idle = amdgpu_amdkfd_set_compute_idle
};

struct kfd2kgd_calls *amdgpu_amdkfd_gfx_7_get_functions(void)
+2 −1
Original line number Diff line number Diff line
@@ -177,7 +177,8 @@ static const struct kfd2kgd_calls kfd2kgd = {
	.invalidate_tlbs_vmid = invalidate_tlbs_vmid,
	.submit_ib = amdgpu_amdkfd_submit_ib,
	.get_vm_fault_info = amdgpu_amdkfd_gpuvm_get_vm_fault_info,
	.gpu_recover = amdgpu_amdkfd_gpu_reset
	.gpu_recover = amdgpu_amdkfd_gpu_reset,
	.set_compute_idle = amdgpu_amdkfd_set_compute_idle
};

struct kfd2kgd_calls *amdgpu_amdkfd_gfx_8_0_get_functions(void)
+2 −1
Original line number Diff line number Diff line
@@ -213,7 +213,8 @@ static const struct kfd2kgd_calls kfd2kgd = {
	.invalidate_tlbs = invalidate_tlbs,
	.invalidate_tlbs_vmid = invalidate_tlbs_vmid,
	.submit_ib = amdgpu_amdkfd_submit_ib,
	.gpu_recover = amdgpu_amdkfd_gpu_reset
	.gpu_recover = amdgpu_amdkfd_gpu_reset,
	.set_compute_idle = amdgpu_amdkfd_set_compute_idle
};

struct kfd2kgd_calls *amdgpu_amdkfd_gfx_9_0_get_functions(void)
Loading