On 7/27/21 01:12, Sreekanth Reddy wrote:
+ /*
+ * wait for current poll to complete.
+ */
+ for (qid = 0; qid < iopoll_q_count; qid++) {
+ while (atomic_read(&ioc->io_uring_poll_queues[qid].busy))
+ udelay(500);
+ }
So this loop busy-waits without calling cpu_relax()? That's not OK ...
An additional question: is mpt3sas_base_hard_reset_handler() the only
function that calls mpt3sas_base_pause_mq_polling() and
mpt3sas_base_resume_mq_polling()? If so, why have these functions been
introduced since the SCSI core guarantees that all pending requests
either have failed or have timed out before the SCSI error handler is
invoked?
Thanks,
Bart.