Christoph Hellwig <hch@xxxxxx> writes: > diff --git a/block/blk-mq.c b/block/blk-mq.c > index fcfce666457e2..540b5845cd1d3 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -386,6 +386,20 @@ static struct request *__blk_mq_alloc_request(struct blk_mq_alloc_data *data) > return rq; > } > > +static void __blk_mq_alloc_request_cb(void *__data) > +{ > + struct blk_mq_alloc_data *data = __data; > + > + data->rq = __blk_mq_alloc_request(data); > +} > + > +static struct request *__blk_mq_alloc_request_on_cpumask(const cpumask_t *mask, > + struct blk_mq_alloc_data *data) > +{ > + smp_call_function_any(mask, __blk_mq_alloc_request_cb, data, 1); > + return data->rq; > +} Is this absolutely necessary to be a smp function call? That's going to be problematic vs. RT. Same applies to the explicit preempt_disable() in patch 7. Thanks, tglx