From mboxrd@z Thu Jan 1 00:00:00 1970 From: keith.busch@intel.com (Keith Busch) Date: Fri, 22 May 2015 17:07:22 +0000 (UTC) Subject: [PATCH] NVMe: Avoid interrupt disable during queue init. In-Reply-To: References: <1432253553-17045-1-git-send-email-parav.pandit@avagotech.com> Message-ID: On Fri, 22 May 2015, Parav Pandit wrote: > On Fri, May 22, 2015@9:53 PM, Keith Busch wrote: >> A memory barrier before incrementing the dev->queue_count (and assigning >> the pointer in the array before that) should address this concern. > > Sure. mb() will solve the publisher side problem. RCU is wrapper around mb(). > However mb() doesn't solve the issue of q_lock variable getting > fetched before if (!nvmeq) condition being executed, by value > compilation optimizations in nvme_kthread(). Eh? The value of dev->queue_count prevents the thread's for-loop from iterating that nvmeq before the q_lock is initialized.