dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
From: Lucas Stach <dev@lynxeye.de>
To: Ben Skeggs <skeggsb@gmail.com>, Ilia Mirkin <imirkin@alum.mit.edu>
Cc: "nouveau@lists.freedesktop.org" <nouveau@lists.freedesktop.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH 6/6] drm/nouveau: use MSI interrupts
Date: Wed, 28 Aug 2013 09:28:57 +0200	[thread overview]
Message-ID: <1377674937.1624.2.camel@tellur> (raw)
In-Reply-To: <CACAvsv5shyLkE-WdJj6yDx1hhFtNRkuzujxQasWd2MAaVMjJ7A@mail.gmail.com>

Am Mittwoch, den 28.08.2013, 17:09 +1000 schrieb Ben Skeggs:
> On Wed, Aug 28, 2013 at 10:00 AM, Lucas Stach <dev@lynxeye.de> wrote:
> > MSIs were only problematic on some old, broken chipsets. But now that we
> > already see systems where PCI legacy interrupts are somewhat flaky, it's
> > really time to move to MSIs.
> >
> > Signed-off-by: Lucas Stach <dev@lynxeye.de>
> > ---
> >  drivers/gpu/drm/nouveau/core/include/subdev/mc.h |  1 +
> >  drivers/gpu/drm/nouveau/core/subdev/mc/base.c    | 17 +++++++++++++++++
> >  2 files changed, 18 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/nouveau/core/include/subdev/mc.h b/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
> > index 9d2cd20..ce6569f 100644
> > --- a/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
> > +++ b/drivers/gpu/drm/nouveau/core/include/subdev/mc.h
> > @@ -12,6 +12,7 @@ struct nouveau_mc_intr {
> >  struct nouveau_mc {
> >         struct nouveau_subdev base;
> >         const struct nouveau_mc_intr *intr_map;
> > +       bool use_msi;
> >  };
> >
> >  static inline struct nouveau_mc *
> > diff --git a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
> > index ec9cd6f..02b337e 100644
> > --- a/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
> > +++ b/drivers/gpu/drm/nouveau/core/subdev/mc/base.c
> > @@ -23,6 +23,7 @@
> >   */
> >
> >  #include <subdev/mc.h>
> > +#include <core/option.h>
> >
> >  static irqreturn_t
> >  nouveau_mc_intr(int irq, void *arg)
> > @@ -43,6 +44,9 @@ nouveau_mc_intr(int irq, void *arg)
> >                 map++;
> >         }
> >
> > +       if (pmc->use_msi)
> > +               nv_wr08(pmc->base.base.parent, 0x00088068, 0xff);
> Register not present everywhere.
> 
> At the very least, the enabling of MSI should be disallowed on the
> earlier chipsets where it's not supported.  Though, it's perhaps
> possible that the pci_enable_msi() call will fail in all of these
> cases anyway.. I'm not certain.
> 
MSIs are required property for everything doing PCIe. So the only cases
where this should fail is plain PCI/AGP devices. I don't really have a
test system for those old cards set up.

But I remember Ilia having some legacy things plugged in, so maybe he
could test this patch and see how it goes?

> > +
> >         if (intr) {
> >                 nv_error(pmc, "unknown intr 0x%08x\n", stat);
> >         }
> > @@ -75,6 +79,8 @@ _nouveau_mc_dtor(struct nouveau_object *object)
> >         struct nouveau_device *device = nv_device(object);
> >         struct nouveau_mc *pmc = (void *)object;
> >         free_irq(device->pdev->irq, pmc);
> > +       if (pmc->use_msi)
> > +               pci_disable_msi(device->pdev);
> >         nouveau_subdev_destroy(&pmc->base);
> >  }
> >
> > @@ -96,6 +102,17 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine,
> >
> >         pmc->intr_map = intr_map;
> >
> > +       pmc->use_msi = nouveau_boolopt(device->cfgopt, "NvMSI", true);
> > +       if (pmc->use_msi) {
> > +               ret = pci_enable_msi(device->pdev);
> > +               if (ret) {
> > +                       pmc->use_msi = false;
> > +               } else {
> > +                       nv_wr08(device, 0x00088068, 0xff);
> > +                       nv_info(pmc, "MSI interrupts enabled\n");
> > +               }
> > +       }
> > +
> >         ret = request_irq(device->pdev->irq, nouveau_mc_intr,
> >                           IRQF_SHARED, "nouveau", pmc);
> >         if (ret < 0)
> > --
> > 1.8.3.1
> >

  reply	other threads:[~2013-08-28  7:28 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-28  0:00 [PATCH 0/6] Nouveau on ARM fixes Lucas Stach
2013-08-28  0:00 ` [PATCH 1/6] drm/ttm: recognize ARM arch in ioprot handler Lucas Stach
2013-08-28  0:00 ` [PATCH 2/6] drm/ttm: introduce dma cache sync helpers Lucas Stach
     [not found] ` <1377648050-6649-1-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
2013-08-28  0:00   ` [PATCH 3/6] drm/nouveau: hook up cache sync functions Lucas Stach
2013-08-28 16:43     ` Konrad Rzeszutek Wilk
     [not found]       ` <20130828164357.GB27172-6K5HmflnPlqSPmnEAIUT9EEOCMrvLtNR@public.gmane.org>
2013-08-28 16:58         ` Lucas Stach
2013-08-28 18:21           ` Konrad Rzeszutek Wilk
2013-08-28  0:00   ` [PATCH 6/6] drm/nouveau: use MSI interrupts Lucas Stach
     [not found]     ` <1377648050-6649-7-git-send-email-dev-8ppwABl0HbeELgA04lAiVw@public.gmane.org>
2013-08-28  7:09       ` Ben Skeggs
2013-08-28  7:28         ` Lucas Stach [this message]
2013-08-28 13:54           ` Ilia Mirkin
2013-08-29  0:07             ` Ben Skeggs
     [not found]               ` <CACAvsv7Ew+0icWEq6ixdtP9Vpux4zeWjV5Lpih94YZWgs_jx4A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-29  2:20                 ` Ilia Mirkin
2013-08-29  4:45                   ` Ben Skeggs
2013-08-29  5:00                     ` Ilia Mirkin
2013-08-29  5:07                       ` Ben Skeggs
     [not found]                         ` <CACAvsv4AZo-B3MtTh3oN946YAC=vPiR=S3TsEg7R2-hEma57tg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-30  1:10                           ` Ilia Mirkin
2013-08-30  1:58                             ` Ben Skeggs
2013-08-30  2:00                               ` Ben Skeggs
     [not found]                               ` <CACAvsv5f3vfP1Fs41N=L8Sc_ih32_h5Vz44mjMTJ-WXH9mDe0A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-08-30  2:01                                 ` Ilia Mirkin
2013-08-30  5:36                                   ` Ben Skeggs
2013-08-30  7:11                                     ` Lucas Stach
2013-09-04  1:45                                       ` Ben Skeggs
2013-09-30 17:27                                         ` [Nouveau] " Peter Hurley
     [not found]                                           ` <5249B494.5020500-WaGBZJeGNqdsbIuE7sb01tBPR1lH4CV8@public.gmane.org>
2013-10-01 17:32                                             ` Peter Hurley
2013-08-28 16:08           ` Konrad Rzeszutek Wilk
2013-08-28  0:00 ` [PATCH 4/6] drm/nouveau: introduce NOUVEAU_GEM_TILE_WCUS Lucas Stach
2013-08-28  7:11   ` Ben Skeggs
2013-08-28  7:39     ` Lucas Stach
2013-08-28  0:00 ` [PATCH 5/6] drm/nouveau: map IB write-combined Lucas Stach
2013-08-28  7:50 ` [PATCH 0/6] Nouveau on ARM fixes Thierry Reding
2013-08-28  8:09   ` Ben Skeggs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1377674937.1624.2.camel@tellur \
    --to=dev@lynxeye.de \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=imirkin@alum.mit.edu \
    --cc=nouveau@lists.freedesktop.org \
    --cc=skeggsb@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).