[PATCH] drm/amdgpu: Fix none-powerplay issue when load driver on emulation mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 6, 2018 at 2:34 PM, Shaoyun Liu <Shaoyun.Liu at amd.com> wrote:
> On emulation mode , driver will be loaded with powerplay disabled
>
> Change-Id: I22c343d990f9a306b033728a1cb560c1e8a4677f
> Signed-off-by: Shaoyun Liu <Shaoyun.Liu at amd.com>

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 8 ++++++++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c     | 6 ++++--
>  3 files changed, 15 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> index 2d99099..7bca99d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
> @@ -398,6 +398,11 @@ void get_local_mem_info(struct kgd_dev *kgd,
>                         mem_info->local_mem_size_public,
>                         mem_info->local_mem_size_private);
>
> +       if (amdgpu_emu_mode == 1) {
> +               mem_info->mem_clk_max = 100;
> +               return;
> +       }
> +
>         if (amdgpu_sriov_vf(adev))
>                 mem_info->mem_clk_max = adev->clock.default_mclk / 100;
>         else
> @@ -418,6 +423,9 @@ uint32_t get_max_engine_clock_in_mhz(struct kgd_dev *kgd)
>         struct amdgpu_device *adev = (struct amdgpu_device *)kgd;
>
>         /* the sclk is in quantas of 10kHz */
> +       if (amdgpu_emu_mode == 1)
> +               return 100;
> +
>         if (amdgpu_sriov_vf(adev))
>                 return adev->clock.default_sclk / 100;
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index fe7a941..ab6068c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1420,6 +1420,9 @@ static int amdgpu_device_ip_late_set_cg_state(struct amdgpu_device *adev)
>  {
>         int i = 0, r;
>
> +       if (amdgpu_emu_mode == 1)
> +               return 0;
> +
>         for (i = 0; i < adev->num_ip_blocks; i++) {
>                 if (!adev->ip_blocks[i].status.valid)
>                         continue;
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> index 6270131..1b2b039 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
> @@ -2372,7 +2372,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm,
>                 mutex_lock(&id_mgr->lock);
>
>                 if ((adev->vm_manager.n_compute_vms++ == 0) &&
> -                       (!amdgpu_sriov_vf(adev))) {
> +                       (!amdgpu_sriov_vf(adev)) &&
> +                       (amdgpu_emu_mode != 1)) {
>                         /* First Compute VM: enable compute power profile */
>                         if (adev->powerplay.pp_funcs->switch_power_profile)
>                                 amdgpu_dpm_switch_power_profile(adev,
> @@ -2461,7 +2462,8 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)
>                 WARN(adev->vm_manager.n_compute_vms == 0, "Unbalanced number of Compute VMs");
>
>                 if ((--adev->vm_manager.n_compute_vms == 0) &&
> -                       (!amdgpu_sriov_vf(adev))) {
> +                       (!amdgpu_sriov_vf(adev)) &&
> +                       (amdgpu_emu_mode != 1)) {
>                         /* Last KFD VM: enable graphics power profile */
>                         if (adev->powerplay.pp_funcs->switch_power_profile)
>                                 amdgpu_dpm_switch_power_profile(adev,
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux