[PATCH] drm/amdgpu: improve MSI-X handling (v3)
Tom St Denis
tstdenis82 at gmail.com
Thu Oct 3 17:33:40 UTC 2019
Tested-by: Tom St Denis <tom.stdenis at amd.com>
Cheers,
Tom
On Thu, Oct 3, 2019 at 1:30 PM Alex Deucher <alexdeucher at gmail.com> wrote:
> Check the number of supported vectors and fall back to MSI if
> we return or error or 0 MSI-X vectors.
>
> v2: only allocate one vector. We can't currently use more than
> one anyway.
>
> v3: install the irq on vector 0.
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 17 +++++++++++++----
> 1 file changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> index 50771b2757dc..6f3b03f6224f 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> @@ -245,11 +245,19 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
> adev->irq.msi_enabled = false;
>
> if (amdgpu_msi_ok(adev)) {
> - int nvec = pci_alloc_irq_vectors(adev->pdev, 1,
> pci_msix_vec_count(adev->pdev),
> - PCI_IRQ_MSI | PCI_IRQ_MSIX);
> + int nvec = pci_msix_vec_count(adev->pdev);
> + unsigned int flags;
> +
> + if (nvec <= 0) {
> + flags = PCI_IRQ_MSI;
> + } else {
> + flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
> + }
> + /* we only need one vector */
> + nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, flags);
> if (nvec > 0) {
> adev->irq.msi_enabled = true;
> - dev_dbg(adev->dev, "amdgpu: using MSI.\n");
> + dev_dbg(adev->dev, "amdgpu: using MSI/MSI-X.\n");
> }
> }
>
> @@ -272,7 +280,8 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
> INIT_WORK(&adev->irq.ih2_work, amdgpu_irq_handle_ih2);
>
> adev->irq.installed = true;
> - r = drm_irq_install(adev->ddev, adev->ddev->pdev->irq);
> + /* Use vector 0 for MSI-X */
> + r = drm_irq_install(adev->ddev, pci_irq_vector(adev->pdev, 0));
> if (r) {
> adev->irq.installed = false;
> if (!amdgpu_device_has_dc_support(adev))
> --
> 2.20.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/amd-gfx/attachments/20191003/cc0d9b6c/attachment.html>
More information about the amd-gfx
mailing list