On 2021-01-25 08:25:42 [+0000], Christoph Hellwig wrote: > On Mon, Jan 25, 2021 at 08:10:16AM +0100, Hannes Reinecke wrote: > > I don't get this. > > This code is about _avoiding_ having to raise a softirq if the driver > > exports more than one hardware queue. > > So where exactly does the remote CPU case come in here? > > __blk_mq_complete_request_remote is only called for the case where we > do not completelky locally. The case that "degrades" here is where > the device supports multiple queues, but less than the number of CPUs, > and we bounce the completion to another CPU. Does it really "degrade" or just use the softirq more often? The usual case is run the softirqs in irq_exit() which is just after IPI. Sebastian