Linux-PCI Archive on lore.kernel.org
 help / color / Atom feed
From: Tim Harvey <tharvey@gateworks.com>
To: Marc Zyngier <marc.zyngier@arm.com>
Cc: Lucas Stach <l.stach@pengutronix.de>,
	Gustavo Pimentel <gustavo.pimentel@synopsys.com>,
	Bjorn Helgaas <helgaas@kernel.org>,
	Jingoo Han <jingoohan1@gmail.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	linux-pci@vger.kernel.org, Sascha Hauer <kernel@pengutronix.de>,
	patchwork-lst@pengutronix.de
Subject: Re: [PATCH] PCI: dwc: skip MSI init if MSIs have been explicitly disabled
Date: Wed, 6 Mar 2019 07:59:15 -0800
Message-ID: <CAJ+vNU0EJbLETqQX51ZWNLX_t7fC3X524XsPr+dngkpntXjpXQ@mail.gmail.com> (raw)
In-Reply-To: <86ef7m1ji2.wl-marc.zyngier@arm.com>

On Mon, Mar 4, 2019 at 12:18 PM Marc Zyngier <marc.zyngier@arm.com> wrote:
>
> Hi both,
>
> On Mon, 04 Mar 2019 19:39:45 +0000,
> Lucas Stach <l.stach@pengutronix.de> wrote:
> >
> > Hi Bjorn,
> >
> > Am Montag, den 04.03.2019, 13:25 -0600 schrieb Bjorn Helgaas:
> > > [+cc Marc, in case you have any suggestions]
> > >
> > > Hi Lucas,
> > >
> > > Nit: this has already been merged, but next time please make the
> > > subject line match the convention wrt capitalization.  This is not a
> > > PCI-specific idea; all it takes is "git log --oneline <file>", and
> > > that should be common practice anywhere in the kernel.
> >
> > Sorry about that. I didn't really notice the capitalization, but
> > focused on the prefix.
> >
> > > On Wed, Feb 27, 2019 at 05:52:19PM +0100, Lucas Stach wrote:
> > > > Since 7c5925afbc58 (PCI: dwc: Move MSI IRQs allocation to IRQ domains
> > > > hierarchical API) the MSI init claims one of the controller IRQs as a
> > > > chained IRQ line for the MSI controller. On some designs, like the i.MX6,
> > > > this line is shared with a PCIe legacy IRQ. When the line is claimed for
> > > > the MSI domain, any device trying to use this legacy IRQs will fail to
> > > > request this IRQ line.
> > > >
> > > > As MSI and legacy IRQs are already mutually exclusive on the DWC core,
> > > > as the core won't forward any legacy IRQs once any MSI has been enabled,
> > > > users wishing to use legacy IRQs already need to explictly disable MSI
> > > > support (usually via the pci=nomsi kernel commandline option). To avoid
> > > > any issues with MSI conflicting with legacy IRQs, just skip all of the
> > > > DWC MSI initalization, including the IRQ line claim, when MSI is disabled.
> > >
> > > Does this mean that if we have a device that uses legacy IRQs, the
> > > user has to figure out to boot with "pci=nomsi"?
> >
> > As long as there is only a single device connected and there are no
> > port services things will work. If port services are active, those will
> > start to use MSIs, breaking legacy IRQs in the process.
> >
> > I've asked Synopsys if there is a workaround for this, but it seems
> > that the core is working "as designed" with no workaround for this icky
> > behavior.
>
> Is this the general DWC controller behaviour? Or something that is
> specific to a given implementation? I can't believe someone actually
> thought this is an acceptable behaviour...
>
> Gustavo, can you please check with your HW colleagues and let
> everybody know what's the official Synopsys position on this?
>
> >
> > > I don't like kernel command line parameters.  If we need that
> > > parameter to make devices with legacy IRQs work, what happens without
> > > the parameter?  How obvious is it that the fix is to use "pci=nomsi"?
> >
> > Totally non-obvious currently. Maybe this warrants a warning in the
> > kernel log.
> >
> > > Is it impossible for Linux to figure this out and make it work
> > > automatically?
> > >
> > > If we can't do it automatically, fine, maybe we have to live with the
> > > parameter.  But if there's any way we can avoid it, we should.
> >
> > I don't think there is a practical way to make this work
> > automatically.
> >
> > At PCIe enumeration time we can only know if all devices in the
> > hierarchy are able to use MSIs, but this doesn't mean the device driver
> > will use MSIs. This is something we only get to know at driver probe
> > time, at which point it may already be too late, as another device
> > might already use some MSIs, so we can't revert to legacy IRQs only
> > mode.
>
> It is almost as the default is backward. It feels like it should
> default to legacy interrupts, and only enable MSIs if the user
> actually asks for it. We should always be able to provide legacy
> interrupts, as this is the usual fallback for most drivers.
>

Marc,

I would agree with 'should default to legacy interrupts' as that works
everywhere AFAIK and likely allows for improved performance.

Tim

  parent reply index

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-27 16:52 Lucas Stach
2019-02-27 17:25 ` Fabio Estevam
2019-02-27 17:43   ` Tim Harvey
2019-02-28 13:29 ` Lorenzo Pieralisi
2019-03-01 10:10   ` Gustavo Pimentel
2019-03-01 12:29 ` Lorenzo Pieralisi
2019-03-04 19:25 ` Bjorn Helgaas
2019-03-04 19:39   ` Lucas Stach
2019-03-04 20:18     ` Marc Zyngier
2019-03-06  9:53       ` Gustavo Pimentel
2019-03-06 11:39         ` Lucas Stach
2019-03-06 15:59       ` Tim Harvey [this message]
2019-04-15 14:34       ` Gustavo Pimentel

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=CAJ+vNU0EJbLETqQX51ZWNLX_t7fC3X524XsPr+dngkpntXjpXQ@mail.gmail.com \
    --to=tharvey@gateworks.com \
    --cc=gustavo.pimentel@synopsys.com \
    --cc=helgaas@kernel.org \
    --cc=jingoohan1@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@pengutronix.de \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=marc.zyngier@arm.com \
    --cc=patchwork-lst@pengutronix.de \
    /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

Linux-PCI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-pci/0 linux-pci/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-pci linux-pci/ https://lore.kernel.org/linux-pci \
		linux-pci@vger.kernel.org
	public-inbox-index linux-pci

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-pci


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git