[PATCH] drm/amdgpu: release exclusive mode after hw_init if no kfd

Ding, Pixel Pixel.Ding at amd.com
Mon Oct 30 08:30:49 UTC 2017


Get your point. I don’t know why the test is passed however will revise later.

I definitely want the know if KFD is enabled before device init. Any suggestion? Or do you mind if the pdev is passed to probe in other way?

— 
Sincerely Yours,
Pixel








On 30/10/2017, 4:20 PM, "Oded Gabbay" <oded.gabbay at gmail.com> wrote:

>On Mon, Oct 30, 2017 at 9:57 AM, Pixel Ding <Pixel.Ding at amd.com> wrote:
>> From: pding <Pixel.Ding at amd.com>
>>
>> Move kfd probe prior to device init. Release exclusive mode
>> after hw_init if kfd is not enabled.
>>
>> Signed-off-by: pding <Pixel.Ding at amd.com>
>> ---
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c    | 5 +++--
>>  2 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> index 400dfaa..e46ec51 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>> @@ -1716,6 +1716,9 @@ static int amdgpu_init(struct amdgpu_device *adev)
>>                 adev->ip_blocks[i].status.hw = true;
>>         }
>>
>> +       if (amdgpu_sriov_vf(adev) && !adev->kfd)
>> +               amdgpu_virt_release_full_gpu(adev, true);
>> +
>>         return 0;
>>  }
>>
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> index 3e9760d..e91907c 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
>> @@ -138,6 +138,8 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>>             !pci_is_thunderbolt_attached(dev->pdev))
>>                 flags |= AMD_IS_PX;
>>
>> +       amdgpu_amdkfd_device_probe(adev);
>> +
>>         /* amdgpu_device_init should report only fatal error
>>          * like memory allocation failure or iomapping failure,
>>          * or memory manager initialization failure, it must
>> @@ -170,7 +172,6 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>>                                 "Error during ACPI methods call\n");
>>         }
>>
>> -       amdgpu_amdkfd_device_probe(adev);
>>         amdgpu_amdkfd_device_init(adev);
>>
>>         if (amdgpu_device_is_px(dev)) {
>> @@ -182,7 +183,7 @@ int amdgpu_driver_load_kms(struct drm_device *dev, unsigned long flags)
>>                 pm_runtime_put_autosuspend(dev->dev);
>>         }
>>
>> -       if (amdgpu_sriov_vf(adev))
>> +       if (amdgpu_sriov_vf(adev) && adev->kfd)
>>                 amdgpu_virt_release_full_gpu(adev, true);
>>
>>  out:
>> --
>> 2.9.5
>>
>> _______________________________________________
>> amd-gfx mailing list
>> amd-gfx at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
>
>The amdkfd probe function uses the pdev field inside adev. That field
>is initialized in device init, so you can't call amdkfd probe before
>that function.
>Oded


More information about the amd-gfx mailing list