On Wed, Aug 17, 2016 at 12:09:59PM +0200, Sebastian Andrzej Siewior wrote: > The driver creates its own per-CPU threads which are updated based on CPU > hotplug events. It is also possible to use kworkers and remove some of the > infrastructure get the same job done while saving a few lines of code. > > The DECLARE_PER_CPU() definition is moved into the header file where it > belongs. bnx2i_percpu_io_thread() becomes bnx2i_percpu_io_work() which is > mostly the same code. The outer loop (kthread_should_stop()) gets removed and > the remaining code is shifted to the left. > bnx2i_queue_scsi_cmd_resp() is mostly the same. The code checked ->iothread to > decide if there is an active per-CPU thread. With the kworkers this is no > longer possible nor required. > The allocation of struct bnx2i_work does not happen with ->p_work_lock held > which is not required. I am unsure about the call-stack so I can't say > if this qualifies it for the allocation with GFP_KERNEL instead of > GFP_ATOMIC (it is not _bh lock but as I said, I don't know the context). > The allocation case has been reversed so the inner if case is called on > !bnx2i_work and is just the invocation one function since the lock is not > held during allocation. The init of the new bnx2i_work struct is now > done also without the ->p_work_lock held: it is a new object, nobody > knows about it yet. It should be enough to hold the lock while adding > this item to the list. I am unsure about that atomic_inc() so I keep > things as they were. > > The remaining part is the removal CPU hotplug notifier since it is taken > care by the kworker code. > > This patch was only compile-tested due to -ENODEV. > > Cc: QLogic-Storage-Upstream@xxxxxxxxxx > Cc: Christoph Hellwig <hch@xxxxxx> > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> I'm sorry it took so long but for the whole series: Tested-by: Johannes Thumshirn <jth@xxxxxxxxxx> Acked-by: Johannes Thumshirn <jth@xxxxxxxxxx> Testing was conducted by booting from a QLogic BCM57840 CNA. Johannes -- Johannes Thumshirn Storage jthumshirn@xxxxxxx +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html