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
> >
next prev parent 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
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
[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 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.