[PATCH] drm/amdgpu: release exclusive mode after hw_init if no kfd (v2)
Oded Gabbay
oded.gabbay at gmail.com
Tue Oct 31 10:26:06 UTC 2017
I sent you an answer in the other email thread
On Tue, Oct 31, 2017 at 9:06 AM, Ding, Pixel <Pixel.Ding at amd.com> wrote:
> Hi Oded,
>
> Would you please help reviewing the V2 patch?
>
> —
> Sincerely Yours,
> Pixel
>
>
>
>
>
>
>
>
> On 31/10/2017, 9:47 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.
>>
>>v2:
>> - pass pdev param
>>
>>Signed-off-by: pding <Pixel.Ding at amd.com>
>>---
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c | 5 +++--
>> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h | 3 ++-
>> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
>> drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 5 +++--
>> 4 files changed, 11 insertions(+), 5 deletions(-)
>>
>>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
>>index c70cda0..f0f5d0e 100644
>>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
>>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
>>@@ -68,7 +68,8 @@ void amdgpu_amdkfd_fini(void)
>> }
>> }
>>
>>-void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
>>+void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev,
>>+ struct pci_dev *pdev)
>> {
>> const struct kfd2kgd_calls *kfd2kgd;
>>
>>@@ -90,7 +91,7 @@ void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev)
>> }
>>
>> adev->kfd = kgd2kfd->probe((struct kgd_dev *)adev,
>>- adev->pdev, kfd2kgd);
>>+ pdev, kfd2kgd);
>> }
>>
>> void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
>>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
>>index 8d689ab..707c892 100644
>>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
>>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
>>@@ -44,7 +44,8 @@ void amdgpu_amdkfd_suspend(struct amdgpu_device *adev);
>> int amdgpu_amdkfd_resume(struct amdgpu_device *adev);
>> void amdgpu_amdkfd_interrupt(struct amdgpu_device *adev,
>> const void *ih_ring_entry);
>>-void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev);
>>+void amdgpu_amdkfd_device_probe(struct amdgpu_device *adev,
>>+ struct pci_dev *pdev);
>> void amdgpu_amdkfd_device_init(struct amdgpu_device *adev);
>> void amdgpu_amdkfd_device_fini(struct amdgpu_device *adev);
>>
>>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>index 2ff2c54..daa2098 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..f872052 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, dev->pdev);
>>+
>> /* 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
>>
More information about the amd-gfx
mailing list