All of lore.kernel.org
 help / color / mirror / Atom feed
From: keith.busch@linux.intel.com (Keith Busch)
Subject: [PATCH 5/7] nvme-pci: handle completions outside of the queue lock
Date: Mon, 21 May 2018 08:40:00 -0600	[thread overview]
Message-ID: <20180521144000.GF5528@localhost.localdomain> (raw)
In-Reply-To: <eb85e457-7f90-fce4-9d1b-bd3471f6b396@kernel.dk>

On Mon, May 21, 2018@08:33:21AM -0600, Jens Axboe wrote:
> Just saw the pull, was writing the below. If you can ack/review it,
> then I'll queue it on top.

Oops, sorry about that.
 
> You forgot to fold the poll fix... Here it is as a separate patch, or
> fold it with "nvme-pci: handle completions outside of the queue lock"
> and kill the last section in the commit message on cqe_seen.
> 
> From: Jens Axboe <axboe at kernel.dk>
> Subject: [PATCH] nvme-pci: fix race between poll and IRQ completions
> 
> If polling completions are racing with the IRQ triggered by a
> completion, the IRQ handler will find no work and return IRQ_NONE.
> This can trigger complaints about spurious interrupts:
> 
> [  560.169153] irq 630: nobody cared (try booting with the "irqpoll" option)
> [  560.175988] CPU: 40 PID: 0 Comm: swapper/40 Not tainted 4.17.0-rc2+ #65
> [  560.175990] Hardware name: Intel Corporation S2600STB/S2600STB, BIOS SE5C620.86B.00.01.0010.010920180151 01/09/2018
> [  560.175991] Call Trace:
> [  560.175994]  <IRQ>
> [  560.176005]  dump_stack+0x5c/0x7b
> [  560.176010]  __report_bad_irq+0x30/0xc0
> [  560.176013]  note_interrupt+0x235/0x280
> [  560.176020]  handle_irq_event_percpu+0x51/0x70
> [  560.176023]  handle_irq_event+0x27/0x50
> [  560.176026]  handle_edge_irq+0x6d/0x180
> [  560.176031]  handle_irq+0xa5/0x110
> [  560.176036]  do_IRQ+0x41/0xc0
> [  560.176042]  common_interrupt+0xf/0xf
> [  560.176043]  </IRQ>
> [  560.176050] RIP: 0010:cpuidle_enter_state+0x9b/0x2b0
> [  560.176052] RSP: 0018:ffffa0ed4659fe98 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdd
> [  560.176055] RAX: ffff9527beb20a80 RBX: 000000826caee491 RCX: 000000000000001f
> [  560.176056] RDX: 000000826caee491 RSI: 00000000335206ee RDI: 0000000000000000
> [  560.176057] RBP: 0000000000000001 R08: 00000000ffffffff R09: 0000000000000008
> [  560.176059] R10: ffffa0ed4659fe78 R11: 0000000000000001 R12: ffff9527beb29358
> [  560.176060] R13: ffffffffa235d4b8 R14: 0000000000000000 R15: 000000826caed593
> [  560.176065]  ? cpuidle_enter_state+0x8b/0x2b0
> [  560.176071]  do_idle+0x1f4/0x260
> [  560.176075]  cpu_startup_entry+0x6f/0x80
> [  560.176080]  start_secondary+0x184/0x1d0
> [  560.176085]  secondary_startup_64+0xa5/0xb0
> [  560.176088] handlers:
> [  560.178387] [<00000000efb612be>] nvme_irq [nvme]
> [  560.183019] Disabling IRQ #630
> 
> A previous commit removed ->cqe_seen that was handling this case,
> but we need to handle this a bit differently due to completions
> now running outside the queue lock. Return IRQ_HANDLED from the
> IRQ handler, if the completion ring head was moved since we last
> saw it.
> 
> Fixes: 5cb525c8315f ("nvme-pci: handle completions outside of the queue lock")
> Reported-by: Keith Busch <keith.busch at intel.com>
> Signed-off-by: Jens Axboe <axboe at kernel.dk>

Reviewed-by: Keith Busch <keith.busch at intel.com>
Tested-by: Keith Busch <keith.busch at intel.com>

  reply	other threads:[~2018-05-21 14:40 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-18 14:52 [PATCHSET v2 0/7] Improve nvme completion handling Jens Axboe
2018-05-18 14:52 ` [PATCH 1/7] nvme: mark the result argument to nvme_complete_async_event volatile Jens Axboe
2018-05-18 14:52 ` [PATCH 2/7] nvme-pci: simplify nvme_cqe_valid Jens Axboe
2018-05-18 20:49   ` Keith Busch
2018-05-18 20:48     ` Jens Axboe
2018-05-18 14:52 ` [PATCH 3/7] nvme-pci: remove cq check after submission Jens Axboe
2018-05-18 14:52 ` [PATCH 4/7] nvme-pci: move ->cq_vector == -1 check outside of ->q_lock Jens Axboe
2018-05-18 14:52 ` [PATCH 5/7] nvme-pci: handle completions outside of the queue lock Jens Axboe
2018-05-18 21:06   ` Keith Busch
2018-05-18 21:11     ` Jens Axboe
2018-05-18 21:22       ` Jens Axboe
2018-05-18 21:28         ` Keith Busch
2018-05-18 21:31           ` Jens Axboe
2018-05-18 21:48             ` Keith Busch
2018-05-18 22:46               ` Jens Axboe
2018-05-21 14:18               ` Jens Axboe
2018-05-21 14:23                 ` Keith Busch
2018-05-21 14:33                   ` Jens Axboe
2018-05-21 14:40                     ` Keith Busch [this message]
2018-05-21 14:43                       ` Keith Busch
2018-05-18 21:25       ` Keith Busch
2018-05-18 14:52 ` [PATCH 6/7] nvme-pci: split the nvme queue lock into submission and completion locks Jens Axboe
2018-05-18 14:52 ` [PATCH 7/7] nvme-pci: drop IRQ disabling on submission queue lock Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2018-05-17 16:31 RFC: handle completions outside the queue lock and split the " Christoph Hellwig
2018-05-17 16:31 ` [PATCH 5/7] nvme-pci: handle completions outside of " Christoph Hellwig

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=20180521144000.GF5528@localhost.localdomain \
    --to=keith.busch@linux.intel.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.