diff options
| author | Mark Brown <broonie@kernel.org> | 2025-06-24 01:30:49 +0300 | 
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2025-06-24 01:30:49 +0300 | 
| commit | 1256eb42db5d1635f4c6da5b1b58db0b53320883 (patch) | |
| tree | 4a06ef5a4ed8e2f67ead59ad4257a7e6524ed8b1 /io_uring/io_uring.c | |
| parent | 5fc2c383125c2b4b6037e02ad8796b776b25e6d0 (diff) | |
| parent | 8f9cf02c8852837923f1cdacfcc92e138513325c (diff) | |
| download | linux-1256eb42db5d1635f4c6da5b1b58db0b53320883.tar.xz | |
spi: microchip-core-qspi: Add regular transfers
Merge series from Conor Dooley <conor@kernel.org>:
This is a v2 of a patchset I sent about this time last year, adding the
regular transfer_one_message op to the microchip-core-qspi driver. In that
v1 Mark expressed his dislike for that op, so v2 is using
prepare/unprepare/transfer_one instead. The unprepare implementation still
contains the 750 us delay that the driver had back in v1. I've heard a
suggestion internally as to why this is needed, but it was unsubstantiated,
so I still have no justification for it. I held off on sending a v2 because
of a lack of explanation for the delay, but I don't wanna hold off forever
for something I might never understand.
Diffstat (limited to 'io_uring/io_uring.c')
| -rw-r--r-- | io_uring/io_uring.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/io_uring/io_uring.c b/io_uring/io_uring.c index cf759c172083..5111ec040c53 100644 --- a/io_uring/io_uring.c +++ b/io_uring/io_uring.c @@ -1523,6 +1523,9 @@ static __cold void io_iopoll_try_reap_events(struct io_ring_ctx *ctx)  		}  	}  	mutex_unlock(&ctx->uring_lock); + +	if (ctx->flags & IORING_SETUP_DEFER_TASKRUN) +		io_move_task_work_from_local(ctx);  }  static int io_iopoll_check(struct io_ring_ctx *ctx, unsigned int min_events) @@ -2906,7 +2909,7 @@ static __cold void io_ring_exit_work(struct work_struct *work)  			struct task_struct *tsk;  			io_sq_thread_park(sqd); -			tsk = sqd->thread; +			tsk = sqpoll_task_locked(sqd);  			if (tsk && tsk->io_uring && tsk->io_uring->io_wq)  				io_wq_cancel_cb(tsk->io_uring->io_wq,  						io_cancel_ctx_cb, ctx, true); @@ -3142,7 +3145,7 @@ __cold void io_uring_cancel_generic(bool cancel_all, struct io_sq_data *sqd)  	s64 inflight;  	DEFINE_WAIT(wait); -	WARN_ON_ONCE(sqd && sqd->thread != current); +	WARN_ON_ONCE(sqd && sqpoll_task_locked(sqd) != current);  	if (!current->io_uring)  		return;  | 
