From: Guenter Roeck <linux@roeck-us.net>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>,
Jens Axboe <axboe@fb.com>, Christoph Hellwig <hch@lst.de>,
Sagi Grimberg <sagi@grimberg.me>,
linux-nvme@lists.infradead.org, qemu-block@nongnu.org,
qemu-devel@nongnu.org
Subject: Re: completion timeouts with pin-based interrupts in QEMU hw/nvme
Date: Tue, 17 Jan 2023 11:21:15 -0800 [thread overview]
Message-ID: <20230117192115.GA2958104@roeck-us.net> (raw)
In-Reply-To: <CAFEAcA9pS7P=SvKsOtRHPtkrNAD8LF2ZpFJ870G3B-rhWYap4g@mail.gmail.com>
On Tue, Jan 17, 2023 at 04:18:14PM +0000, Peter Maydell wrote:
> On Tue, 17 Jan 2023 at 16:10, Guenter Roeck <linux@roeck-us.net> wrote:
> >
> > On Mon, Jan 16, 2023 at 09:58:13PM -0700, Keith Busch wrote:
> > > On Mon, Jan 16, 2023 at 10:14:07PM +0100, Klaus Jensen wrote:
> > > > I noticed that the Linux driver does not use the INTMS/INTMC registers
> > > > to mask interrupts on the controller while processing CQEs. While not
> > > > required by the spec, it is *recommended* in setups not using MSI-X to
> > > > reduce the risk of spurious and/or missed interrupts.
> > >
> > > That's assuming completions are deferred to a bottom half. We don't do
> > > that by default in Linux nvme, though you can ask the driver to do that
> > > if you want.
> > >
> > > > With the patch below, running 100 boot iterations, no timeouts were
> > > > observed on QEMU emulated riscv64 or mips64.
> > > >
> > > > No changes are required in the QEMU hw/nvme interrupt logic.
> > >
> > > Yeah, I can see why: it forces the irq line to deassert then assert,
> > > just like we had forced to happen within the device side patches. Still,
> > > none of that is supposed to be necessary, but this idea of using these
> > > registers is probably fine.
> >
> > There is still no answer why this would be necessary in the first place,
> > on either side. In my opinion, unless someone can confirm that the problem
> > is seen with real hardware, we should assume that it happens on the qemu
> > side and address it there.
>
> Sure, but that means identifying what the divergence
> between QEMU's implementation and the hardware is first. I don't
> want a fudged fix in QEMU's code any more than you want one in
> the kernel's driver code :-)
>
I actually prefer it in qemu because that means I can test nvme support
on all active LTS releases of the Linux kernel, but that is POV and
secondary. This has been broken ever since I started testing nvme
support with qemu, so it doesn't make much of a difference if fixing
the problem for good takes a bit longer. Plus, I run my own version
of qemu anyway, so carrying the fix (hack) in qemu doesn't make much
of a difference for me.
Anyway - any idea what to do to help figuring out what is happening ?
Add tracing support to pci interrupt handling, maybe ?
Guenter
next prev parent reply other threads:[~2023-01-17 19:22 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-12 13:10 completion timeouts with pin-based interrupts in QEMU hw/nvme Klaus Jensen
2023-01-12 14:26 ` Guenter Roeck
2023-01-12 16:34 ` Keith Busch
2023-01-12 17:45 ` Klaus Jensen
2023-01-12 17:51 ` Keith Busch
2023-01-12 19:14 ` Guenter Roeck
2023-01-12 19:27 ` Keith Busch
2023-01-13 0:27 ` Guenter Roeck
2023-01-12 23:57 ` Guenter Roeck
2023-01-13 8:54 ` Klaus Jensen
2023-01-13 12:32 ` Peter Maydell
2023-01-13 12:37 ` Klaus Jensen
2023-01-13 12:42 ` Peter Maydell
2023-01-13 12:46 ` Klaus Jensen
2023-01-13 16:52 ` Keith Busch
2023-01-16 21:14 ` Klaus Jensen
2023-01-17 4:58 ` Keith Busch
2023-01-17 16:09 ` Guenter Roeck
2023-01-17 16:18 ` Peter Maydell
2023-01-17 19:21 ` Guenter Roeck [this message]
2023-01-18 15:04 ` Peter Maydell
2023-01-18 16:33 ` Keith Busch
2023-01-18 23:06 ` Keith Busch
2023-01-19 0:41 ` Alistair Francis
2023-01-19 2:44 ` Keith Busch
2023-01-19 3:10 ` Alistair Francis
2023-01-19 4:03 ` Keith Busch
2023-01-19 7:28 ` Klaus Jensen
2023-01-19 8:02 ` Klaus Jensen
2023-01-19 14:32 ` Guenter Roeck
2023-01-19 10:35 ` Peter Maydell
2023-01-17 16:05 ` Guenter Roeck
2023-01-18 4:17 ` Keith Busch
2023-01-18 22:26 ` Keith Busch
2023-01-19 7:06 ` Klaus Jensen
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=20230117192115.GA2958104@roeck-us.net \
--to=linux@roeck-us.net \
--cc=axboe@fb.com \
--cc=hch@lst.de \
--cc=its@irrelevant.dk \
--cc=kbusch@kernel.org \
--cc=linux-nvme@lists.infradead.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=sagi@grimberg.me \
/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.