Re: [PATCH v3] NVMe: init nvme queue before enabling irq

From: Sagi Grimberg
Date: Thu Jan 21 2016 - 09:55:56 EST


Hi Wenbo,

From: Wenbo Wang <wenbo.wang@xxxxxxxxxxxx>

[v3] Do request irq in nvme_init_queue() to handle request irq failures

There is one problem with the original patch. Since init queue happens
before request irq, online_queue might be left increased if request irq
fails. This version merges request irq into nvme_init_queue() because:
1. It solves the online_queue counting issue if request irq fails.
2. nvme_init_queue() is always followed by request irq, this change
simplifies code.

This version also solves another possible race condition by moving
adminq free irq before iounmap.

[v2] Remove duplicate init code in nvme_alloc_queue()

During reset process, the nvme_dev->bar (ioremapped) may change,
so nvmeq->q_db shall be also updated by nvme_init_queue().

[v1]

Currently nvmeq irq is enabled before queue init, so a spurious
interrupt triggered nvme_process_cq may access nvmeq->q_db just
before it is updated, this could cause kernel panic.

So the patch changes should not appear in the change-log itself, its
meant for the reviewers. The change log should document the fix.


Signed-off-by: Wenbo Wang <wenbo.wang@xxxxxxxxxxxx>
Reviewed-by: Wenwei Tao <wenwei.tao@xxxxxxxxxxxx>
CC: stable@xxxxxxxxxxxxxxx
---

Here (under the '---' separator) the patch vX changes should be
documented in the form:

Changes from v1:
- A2
- B2
- C2

Changes from v0:
- A1
- B1
- C1

This way git-am won't include it in the commit log message.

Other then that the patch itself looks fine,

Reviewed-by: Sagi Grimberg <sagig@xxxxxxxxxxxx>