dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
@ 2020-06-02  9:20 Piotr Stankiewicz
  2020-06-02  9:49 ` Andy Shevchenko
  2020-06-02 13:35 ` Ruhl, Michael J
  0 siblings, 2 replies; 9+ messages in thread
From: Piotr Stankiewicz @ 2020-06-02  9:20 UTC (permalink / raw)
  To: Alex Deucher, Christian König, David Zhou, David Airlie,
	Daniel Vetter
  Cc: Piotr Stankiewicz, dri-devel, amd-gfx, linux-kernel

Seeing as there is shorthand available to use when asking for any type
of interrupt, or any type of message signalled interrupt, leverage it.

Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 5ed4227f304b..6dbe173a9fd4 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -251,11 +251,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
 		int nvec = pci_msix_vec_count(adev->pdev);
 		unsigned int flags;
 
-		if (nvec <= 0) {
+		if (nvec > 0)
+			flags = PCI_IRQ_MSI_TYPES;
+		else
 			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) {
-- 
2.17.2

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02  9:20 [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate Piotr Stankiewicz
@ 2020-06-02  9:49 ` Andy Shevchenko
  2020-06-02  9:57   ` Stankiewicz, Piotr
  2020-06-02 13:35 ` Ruhl, Michael J
  1 sibling, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2020-06-02  9:49 UTC (permalink / raw)
  To: Piotr Stankiewicz
  Cc: David Airlie, Linux Kernel Mailing List, amd-gfx, dri-devel,
	Alex Deucher, Christian König

On Tue, Jun 2, 2020 at 12:24 PM Piotr Stankiewicz
<piotr.stankiewicz@intel.com> wrote:
>
> Seeing as there is shorthand available to use when asking for any type
> of interrupt, or any type of message signalled interrupt, leverage it.
>
> Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> index 5ed4227f304b..6dbe173a9fd4 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> @@ -251,11 +251,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
>                 int nvec = pci_msix_vec_count(adev->pdev);
>                 unsigned int flags;
>
> -               if (nvec <= 0) {
> +               if (nvec > 0)
> +                       flags = PCI_IRQ_MSI_TYPES;
> +               else
>                         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);

I'm not sure if you have seen my last comment internally about this patch.

I don't understand why we need these pci_msix_vec_count() followed by
conditional at all.
Perhaps we may simple drop all these and supply flag directly?

But OTOH, I don't know the initial motivation, so, the above patch is
non-intrusive and keeps original logic.

>                 if (nvec > 0) {
> --
> 2.17.2
>


-- 
With Best Regards,
Andy Shevchenko
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02  9:49 ` Andy Shevchenko
@ 2020-06-02  9:57   ` Stankiewicz, Piotr
  2020-06-02  9:59     ` Andy Shevchenko
  0 siblings, 1 reply; 9+ messages in thread
From: Stankiewicz, Piotr @ 2020-06-02  9:57 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: David Airlie, Linux Kernel Mailing List, amd-gfx, dri-devel,
	Alex Deucher, Christian König

> -----Original Message-----
> From: Andy Shevchenko <andy.shevchenko@gmail.com>
> Sent: Tuesday, June 2, 2020 11:49 AM
> To: Stankiewicz, Piotr <piotr.stankiewicz@intel.com>
> Cc: Alex Deucher <alexander.deucher@amd.com>; Christian König
> <christian.koenig@amd.com>; David Zhou <David1.Zhou@amd.com>; David
> Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; amd-
> gfx@lists.freedesktop.org; dri-devel <dri-devel@lists.freedesktop.org>; Linux
> Kernel Mailing List <linux-kernel@vger.kernel.org>
> Subject: Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where
> appropriate
> 
> On Tue, Jun 2, 2020 at 12:24 PM Piotr Stankiewicz
> <piotr.stankiewicz@intel.com> wrote:
> >
> > Seeing as there is shorthand available to use when asking for any type
> > of interrupt, or any type of message signalled interrupt, leverage it.
> >
> > Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
> > Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
> > ---
> >  drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > index 5ed4227f304b..6dbe173a9fd4 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
> > @@ -251,11 +251,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
> >                 int nvec = pci_msix_vec_count(adev->pdev);
> >                 unsigned int flags;
> >
> > -               if (nvec <= 0) {
> > +               if (nvec > 0)
> > +                       flags = PCI_IRQ_MSI_TYPES;
> > +               else
> >                         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);
> 
> I'm not sure if you have seen my last comment internally about this patch.
> 
> I don't understand why we need these pci_msix_vec_count() followed by
> conditional at all.
> Perhaps we may simple drop all these and supply flag directly?
> 
> But OTOH, I don't know the initial motivation, so, the above patch is
> non-intrusive and keeps original logic.
> 

Sorry, I must have misunderstood or missed that comment. I am happy
to do a V2 if dropping the conditional is preferable.

> >                 if (nvec > 0) {
> > --
> > 2.17.2
> >
> 
> 
> --
> With Best Regards,
> Andy Shevchenko

BR,
Piotr Stankiewicz
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02  9:57   ` Stankiewicz, Piotr
@ 2020-06-02  9:59     ` Andy Shevchenko
  0 siblings, 0 replies; 9+ messages in thread
From: Andy Shevchenko @ 2020-06-02  9:59 UTC (permalink / raw)
  To: Stankiewicz, Piotr
  Cc: David Airlie, Linux Kernel Mailing List, amd-gfx, dri-devel,
	Alex Deucher, Christian König

On Tue, Jun 2, 2020 at 12:58 PM Stankiewicz, Piotr
<piotr.stankiewicz@intel.com> wrote:
> > -----Original Message-----
> > From: Andy Shevchenko <andy.shevchenko@gmail.com>
> > Sent: Tuesday, June 2, 2020 11:49 AM
> > To: Stankiewicz, Piotr <piotr.stankiewicz@intel.com>
> > Cc: Alex Deucher <alexander.deucher@amd.com>; Christian König
> > <christian.koenig@amd.com>; David Zhou <David1.Zhou@amd.com>; David
> > Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>; amd-
> > gfx@lists.freedesktop.org; dri-devel <dri-devel@lists.freedesktop.org>; Linux
> > Kernel Mailing List <linux-kernel@vger.kernel.org>
> > Subject: Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where
> > appropriate
> > On Tue, Jun 2, 2020 at 12:24 PM Piotr Stankiewicz
> > <piotr.stankiewicz@intel.com> wrote:

...

> > >                 int nvec = pci_msix_vec_count(adev->pdev);
> > >                 unsigned int flags;
> > >
> > > -               if (nvec <= 0) {
> > > +               if (nvec > 0)
> > > +                       flags = PCI_IRQ_MSI_TYPES;
> > > +               else
> > >                         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);
> >
> > I'm not sure if you have seen my last comment internally about this patch.
> >
> > I don't understand why we need these pci_msix_vec_count() followed by
> > conditional at all.
> > Perhaps we may simple drop all these and supply flag directly?
> >
> > But OTOH, I don't know the initial motivation, so, the above patch is
> > non-intrusive and keeps original logic.
> >
>
> Sorry, I must have misunderstood or missed that comment. I am happy
> to do a V2 if dropping the conditional is preferable.

Let's wait for AMD people to confirm either.

-- 
With Best Regards,
Andy Shevchenko
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* RE: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02  9:20 [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate Piotr Stankiewicz
  2020-06-02  9:49 ` Andy Shevchenko
@ 2020-06-02 13:35 ` Ruhl, Michael J
  2020-06-02 14:00   ` Andy Shevchenko
  1 sibling, 1 reply; 9+ messages in thread
From: Ruhl, Michael J @ 2020-06-02 13:35 UTC (permalink / raw)
  To: Stankiewicz, Piotr, Alex Deucher, Christian König,
	David Zhou, David Airlie, Daniel Vetter
  Cc: Stankiewicz, Piotr, amd-gfx, dri-devel, linux-kernel

>-----Original Message-----
>From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
>Piotr Stankiewicz
>Sent: Tuesday, June 2, 2020 5:21 AM
>To: Alex Deucher <alexander.deucher@amd.com>; Christian König
><christian.koenig@amd.com>; David Zhou <David1.Zhou@amd.com>; David
>Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>
>Cc: Stankiewicz, Piotr <piotr.stankiewicz@intel.com>; dri-
>devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; linux-
>kernel@vger.kernel.org
>Subject: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where
>appropriate
>
>Seeing as there is shorthand available to use when asking for any type
>of interrupt, or any type of message signalled interrupt, leverage it.
>
>Signed-off-by: Piotr Stankiewicz <piotr.stankiewicz@intel.com>
>Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
>---
> drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
>diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
>b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
>index 5ed4227f304b..6dbe173a9fd4 100644
>--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
>+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
>@@ -251,11 +251,11 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
> 		int nvec = pci_msix_vec_count(adev->pdev);
> 		unsigned int flags;
>
>-		if (nvec <= 0) {
>+		if (nvec > 0)
>+			flags = PCI_IRQ_MSI_TYPES;
>+		else
> 			flags = PCI_IRQ_MSI;
>-		} else {
>-			flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
>-		}

Minor nit:

Is it really necessary to set do this check?  Can flags just
be set?

I.e.: 
	flags = PCI_IRQ_MSI_TYPES;

pci_alloc_irq_vector() tries stuff in order.  If MSIX is not available,
it will try MSI.

M

>+
> 		/* we only need one vector */
> 		nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, flags);
> 		if (nvec > 0) {
>--
>2.17.2
>
>_______________________________________________
>dri-devel mailing list
>dri-devel@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02 13:35 ` Ruhl, Michael J
@ 2020-06-02 14:00   ` Andy Shevchenko
  2020-06-02 14:21     ` Alex Deucher
  0 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2020-06-02 14:00 UTC (permalink / raw)
  To: Ruhl, Michael J
  Cc: David Airlie, linux-kernel, dri-devel, Stankiewicz, Piotr,
	amd-gfx, Alex Deucher, Christian König

On Tue, Jun 2, 2020 at 4:38 PM Ruhl, Michael J <michael.j.ruhl@intel.com> wrote:
> >-----Original Message-----
> >From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> >Piotr Stankiewicz
> >Sent: Tuesday, June 2, 2020 5:21 AM
> >To: Alex Deucher <alexander.deucher@amd.com>; Christian König
> ><christian.koenig@amd.com>; David Zhou <David1.Zhou@amd.com>; David
> >Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>
> >Cc: Stankiewicz, Piotr <piotr.stankiewicz@intel.com>; dri-
> >devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; linux-
> >kernel@vger.kernel.org
> >Subject: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where
> >appropriate

...

> >               int nvec = pci_msix_vec_count(adev->pdev);
> >               unsigned int flags;
> >
> >-              if (nvec <= 0) {
> >+              if (nvec > 0)
> >+                      flags = PCI_IRQ_MSI_TYPES;
> >+              else
> >                       flags = PCI_IRQ_MSI;
> >-              } else {
> >-                      flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
> >-              }
>
> Minor nit:
>
> Is it really necessary to set do this check?  Can flags just
> be set?
>
> I.e.:
>         flags = PCI_IRQ_MSI_TYPES;
>
> pci_alloc_irq_vector() tries stuff in order.  If MSIX is not available,
> it will try MSI.

That's also what I proposed earlier. But I suggested as well to wait
for AMD people to confirm that neither pci_msix_vec_count() nor flags
is needed and we can directly supply MSI_TYPES to the below call.

> >               /* we only need one vector */
> >               nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, flags);

-- 
With Best Regards,
Andy Shevchenko
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02 14:00   ` Andy Shevchenko
@ 2020-06-02 14:21     ` Alex Deucher
  2020-06-02 14:35       ` Andy Shevchenko
  0 siblings, 1 reply; 9+ messages in thread
From: Alex Deucher @ 2020-06-02 14:21 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: David Airlie, linux-kernel, amd-gfx, Ruhl, Michael J,
	Stankiewicz, Piotr, dri-devel, Alex Deucher,
	Christian König

On Tue, Jun 2, 2020 at 10:00 AM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Tue, Jun 2, 2020 at 4:38 PM Ruhl, Michael J <michael.j.ruhl@intel.com> wrote:
> > >-----Original Message-----
> > >From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> > >Piotr Stankiewicz
> > >Sent: Tuesday, June 2, 2020 5:21 AM
> > >To: Alex Deucher <alexander.deucher@amd.com>; Christian König
> > ><christian.koenig@amd.com>; David Zhou <David1.Zhou@amd.com>; David
> > >Airlie <airlied@linux.ie>; Daniel Vetter <daniel@ffwll.ch>
> > >Cc: Stankiewicz, Piotr <piotr.stankiewicz@intel.com>; dri-
> > >devel@lists.freedesktop.org; amd-gfx@lists.freedesktop.org; linux-
> > >kernel@vger.kernel.org
> > >Subject: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where
> > >appropriate
>
> ...
>
> > >               int nvec = pci_msix_vec_count(adev->pdev);
> > >               unsigned int flags;
> > >
> > >-              if (nvec <= 0) {
> > >+              if (nvec > 0)
> > >+                      flags = PCI_IRQ_MSI_TYPES;
> > >+              else
> > >                       flags = PCI_IRQ_MSI;
> > >-              } else {
> > >-                      flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
> > >-              }
> >
> > Minor nit:
> >
> > Is it really necessary to set do this check?  Can flags just
> > be set?
> >
> > I.e.:
> >         flags = PCI_IRQ_MSI_TYPES;
> >
> > pci_alloc_irq_vector() tries stuff in order.  If MSIX is not available,
> > it will try MSI.
>
> That's also what I proposed earlier. But I suggested as well to wait
> for AMD people to confirm that neither pci_msix_vec_count() nor flags
> is needed and we can directly supply MSI_TYPES to the below call.
>

I think it was leftover from debugging and just to be careful.  We had
some issues when we originally enabled MSI-X on certain boards.  The
fix was to just allocate a single vector (since that is all we use
anyway) and we were using the wrong irq (pdev->irq vs
pci_irq_vector(pdev, 0)).  For reference, the original patch to add
MSI-X:

commit bd660f4f111161f60392dd02424c3a3d2240dc2f
Author: shaoyunl <shaoyun.liu@amd.com>
Date:   Tue Oct 1 15:52:31 2019 -0400

    drm/amdgpu : enable msix for amdgpu driver

    We might used out of the msi resources in some cloud project
    which have a lot gpu devices(including PF and VF), msix can
    provide enough resources from system level view

    Signed-off-by: shaoyunl <shaoyun.liu@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

And the fix:

commit 8a745c7ff2ddb8511ef760b4d9cb4cf56a15fc8d
Author: Alex Deucher <alexander.deucher@amd.com>
Date:   Thu Oct 3 10:34:30 2019 -0500

    drm/amdgpu: improve MSI-X handling (v3)

    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.

    Tested-by: Tom St Denis <tom.stdenis@amd.com>
    Reviewed-by: Shaoyun liu  <shaoyun.liu@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

Alex
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02 14:21     ` Alex Deucher
@ 2020-06-02 14:35       ` Andy Shevchenko
  2020-06-02 14:39         ` Alex Deucher
  0 siblings, 1 reply; 9+ messages in thread
From: Andy Shevchenko @ 2020-06-02 14:35 UTC (permalink / raw)
  To: Alex Deucher
  Cc: David Airlie, linux-kernel, amd-gfx, Ruhl, Michael J,
	Stankiewicz, Piotr, dri-devel, Alex Deucher,
	Christian König

On Tue, Jun 2, 2020 at 5:21 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> On Tue, Jun 2, 2020 at 10:00 AM Andy Shevchenko
> <andy.shevchenko@gmail.com> wrote:
> > On Tue, Jun 2, 2020 at 4:38 PM Ruhl, Michael J <michael.j.ruhl@intel.com> wrote:
> > > >From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> > > >Piotr Stankiewicz

> > > >               int nvec = pci_msix_vec_count(adev->pdev);
> > > >               unsigned int flags;
> > > >
> > > >-              if (nvec <= 0) {
> > > >+              if (nvec > 0)
> > > >+                      flags = PCI_IRQ_MSI_TYPES;
> > > >+              else
> > > >                       flags = PCI_IRQ_MSI;
> > > >-              } else {
> > > >-                      flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
> > > >-              }
> > >
> > > Minor nit:
> > >
> > > Is it really necessary to set do this check?  Can flags just
> > > be set?
> > >
> > > I.e.:
> > >         flags = PCI_IRQ_MSI_TYPES;
> > >
> > > pci_alloc_irq_vector() tries stuff in order.  If MSIX is not available,
> > > it will try MSI.
> >
> > That's also what I proposed earlier. But I suggested as well to wait
> > for AMD people to confirm that neither pci_msix_vec_count() nor flags
> > is needed and we can directly supply MSI_TYPES to the below call.
> >
>
> I think it was leftover from debugging and just to be careful.  We had
> some issues when we originally enabled MSI-X on certain boards.  The
> fix was to just allocate a single vector (since that is all we use
> anyway) and we were using the wrong irq (pdev->irq vs
> pci_irq_vector(pdev, 0)).

Do you agree that simple

  nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, PCI_IRQ_MSI_TYPES);

will work and we can remove that leftover?

-- 
With Best Regards,
Andy Shevchenko
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate
  2020-06-02 14:35       ` Andy Shevchenko
@ 2020-06-02 14:39         ` Alex Deucher
  0 siblings, 0 replies; 9+ messages in thread
From: Alex Deucher @ 2020-06-02 14:39 UTC (permalink / raw)
  To: Andy Shevchenko, Tom St Denis
  Cc: David Airlie, linux-kernel, amd-gfx, Ruhl, Michael J,
	Stankiewicz, Piotr, dri-devel, Alex Deucher,
	Christian König

On Tue, Jun 2, 2020 at 10:35 AM Andy Shevchenko
<andy.shevchenko@gmail.com> wrote:
>
> On Tue, Jun 2, 2020 at 5:21 PM Alex Deucher <alexdeucher@gmail.com> wrote:
> > On Tue, Jun 2, 2020 at 10:00 AM Andy Shevchenko
> > <andy.shevchenko@gmail.com> wrote:
> > > On Tue, Jun 2, 2020 at 4:38 PM Ruhl, Michael J <michael.j.ruhl@intel.com> wrote:
> > > > >From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> > > > >Piotr Stankiewicz
>
> > > > >               int nvec = pci_msix_vec_count(adev->pdev);
> > > > >               unsigned int flags;
> > > > >
> > > > >-              if (nvec <= 0) {
> > > > >+              if (nvec > 0)
> > > > >+                      flags = PCI_IRQ_MSI_TYPES;
> > > > >+              else
> > > > >                       flags = PCI_IRQ_MSI;
> > > > >-              } else {
> > > > >-                      flags = PCI_IRQ_MSI | PCI_IRQ_MSIX;
> > > > >-              }
> > > >
> > > > Minor nit:
> > > >
> > > > Is it really necessary to set do this check?  Can flags just
> > > > be set?
> > > >
> > > > I.e.:
> > > >         flags = PCI_IRQ_MSI_TYPES;
> > > >
> > > > pci_alloc_irq_vector() tries stuff in order.  If MSIX is not available,
> > > > it will try MSI.
> > >
> > > That's also what I proposed earlier. But I suggested as well to wait
> > > for AMD people to confirm that neither pci_msix_vec_count() nor flags
> > > is needed and we can directly supply MSI_TYPES to the below call.
> > >
> >
> > I think it was leftover from debugging and just to be careful.  We had
> > some issues when we originally enabled MSI-X on certain boards.  The
> > fix was to just allocate a single vector (since that is all we use
> > anyway) and we were using the wrong irq (pdev->irq vs
> > pci_irq_vector(pdev, 0)).
>
> Do you agree that simple
>
>   nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1, PCI_IRQ_MSI_TYPES);
>
> will work and we can remove that leftover?

Yes, I believe so.  Tom, can you give this a quick spin on raven just
in case if you get a chance?  Something like this:

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
index 0cc4c67f95f7..c59111b57cc2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
@@ -248,16 +248,10 @@ int amdgpu_irq_init(struct amdgpu_device *adev)
        adev->irq.msi_enabled = false;

        if (amdgpu_msi_ok(adev)) {
-               int nvec = pci_msix_vec_count(adev->pdev);
-               unsigned int flags;
+               int nvec;

-               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);
+               nvec = pci_alloc_irq_vectors(adev->pdev, 1, 1,
PCI_IRQ_MSI | PCI_IRQ_MSIX);
                if (nvec > 0) {
                        adev->irq.msi_enabled = true;
                        dev_dbg(adev->dev, "using MSI/MSI-X.\n");


Thanks,

Alex
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2020-06-02 14:40 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02  9:20 [PATCH 07/15] drm/amdgpu: use PCI_IRQ_MSI_TYPES where appropriate Piotr Stankiewicz
2020-06-02  9:49 ` Andy Shevchenko
2020-06-02  9:57   ` Stankiewicz, Piotr
2020-06-02  9:59     ` Andy Shevchenko
2020-06-02 13:35 ` Ruhl, Michael J
2020-06-02 14:00   ` Andy Shevchenko
2020-06-02 14:21     ` Alex Deucher
2020-06-02 14:35       ` Andy Shevchenko
2020-06-02 14:39         ` Alex Deucher

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).