linux-nvme.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: "Nadolski, Edmund" <edmund.nadolski@intel.com>
Cc: Sagi Grimberg <sagi@grimberg.me>, Long Li <longli@microsoft.com>,
	linux-nvme@lists.infradead.org, Jens Axboe <axboe@fb.com>,
	Keith Busch <kbusch@kernel.org>, Christoph Hellwig <hch@lst.de>
Subject: Re: [PATCH V2 2/2] nvme-pci: check CQ after batch submission for Microsoft device
Date: Thu, 14 Nov 2019 09:34:22 +0800	[thread overview]
Message-ID: <20191114013422.GC14190@ming.t460p> (raw)
In-Reply-To: <f4335756-786b-1f72-313c-92358685d06f@intel.com>

On Wed, Nov 13, 2019 at 04:11:42PM -0700, Nadolski, Edmund wrote:
> On 11/13/2019 6:42 AM, Ming Lei wrote:
> >   	spinlock_t sq_lock;
> >   	void *sq_cmds;
> >   	 /* only used for poll queues: */
> > -	spinlock_t cq_poll_lock ____cacheline_aligned_in_smp;
> > +	union {
> > +		spinlock_t cq_poll_lock;
> > +		spinlock_t cq_lock;
> > +	}____cacheline_aligned_in_smp;
> >   	volatile struct nvme_completion *cqes;
> >   	struct blk_mq_tags **tags;
> >   	dma_addr_t sq_dma_addr;
> 
> Still not sure I follow the case for another lock (seems to me like just a
> semantic distinction, as they both basically bracket nvme_process_cq()
> calls).  What have I overlooked?

.cq_poll_lock is for sync poll queues between nvme_poll_irqdisable() and
nvme_poll(), and this lock won't be acquired in irq context.

.cq_lock is for sync between submission and completion, which can be
acquired in irq context.

Their usage isn't same, and lock context isn't same, and have to be
initialized with different name(lock class) for making lockdep happy.

Thanks,
Ming


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

      reply	other threads:[~2019-11-14  1:34 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-13 13:42 [PATCH V2 0/2] " Ming Lei
2019-11-13 13:42 ` [PATCH V2 1/2] nvme-pci: move sq/cq_poll lock initialization into nvme_init_queue Ming Lei
2019-11-13 13:42 ` [PATCH V2 2/2] nvme-pci: check CQ after batch submission for Microsoft device Ming Lei
2019-11-13 15:53   ` Keith Busch
2019-11-14  1:30     ` Ming Lei
2019-11-14  1:39       ` Ming Lei
2019-11-13 23:11   ` Nadolski, Edmund
2019-11-14  1:34     ` Ming Lei [this message]

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=20191114013422.GC14190@ming.t460p \
    --to=ming.lei@redhat.com \
    --cc=axboe@fb.com \
    --cc=edmund.nadolski@intel.com \
    --cc=hch@lst.de \
    --cc=kbusch@kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=longli@microsoft.com \
    --cc=sagi@grimberg.me \
    --subject='Re: [PATCH V2 2/2] nvme-pci: check CQ after batch submission for Microsoft device' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).