Index: libcfa/src/concurrency/io.cfa
===================================================================
--- libcfa/src/concurrency/io.cfa	(revision 1757f98358ab8f6f5bcdc337f12866d454f976a3)
+++ libcfa/src/concurrency/io.cfa	(revision 059ad166c9e6faec1fbf213925fe3c23cffd787d)
@@ -133,5 +133,5 @@
 	}
 
-	void __cfa_io_flush( processor * proc ) {
+	bool __cfa_io_flush( processor * proc, bool wait ) {
 		/* paranoid */ verify( ! __preemption_enabled() );
 		/* paranoid */ verify( proc );
@@ -141,13 +141,8 @@
 		$io_context & ctx = *proc->io.ctx;
 
-		// for(i; 2) {
-		// 	unsigned idx = proc->rdq.id + i;
-		// 	cltr->ready_queue.lanes.tscs[idx].tv = -1ull;
-		// }
-
 		__ioarbiter_flush( ctx );
 
 		__STATS__( true, io.calls.flush++; )
-		int ret = syscall( __NR_io_uring_enter, ctx.fd, ctx.sq.to_submit, 0, 0, (sigset_t *)0p, _NSIG / 8);
+		int ret = syscall( __NR_io_uring_enter, ctx.fd, ctx.sq.to_submit, wait ? 1 : 0, 0, (sigset_t *)0p, _NSIG / 8);
 		if( ret < 0 ) {
 			switch((int)errno) {
@@ -157,9 +152,5 @@
 				// Update statistics
 				__STATS__( false, io.calls.errors.busy ++; )
-				// for(i; 2) {
-				// 	unsigned idx = proc->rdq.id + i;
-				// 	cltr->ready_queue.lanes.tscs[idx].tv = rdtscl();
-				// }
-				return;
+				return false;
 			default:
 				abort( "KERNEL ERROR: IO_URING SYSCALL - (%d) %s\n", (int)errno, strerror(errno) );
@@ -183,9 +174,5 @@
 		ctx.proc->io.pending = false;
 
-		__cfa_io_drain( proc );
-		// for(i; 2) {
-		// 	unsigned idx = proc->rdq.id + i;
-		// 	cltr->ready_queue.lanes.tscs[idx].tv = rdtscl();
-		// }
+		return __cfa_io_drain( proc );
 	}
 
@@ -315,5 +302,5 @@
 		if(sq.to_submit > 30 || !lazy) {
 			ready_schedule_lock();
-			__cfa_io_flush( ctx->proc );
+			__cfa_io_flush( ctx->proc, false );
 			ready_schedule_unlock();
 		}
Index: libcfa/src/concurrency/io/setup.cfa
===================================================================
--- libcfa/src/concurrency/io/setup.cfa	(revision 1757f98358ab8f6f5bcdc337f12866d454f976a3)
+++ libcfa/src/concurrency/io/setup.cfa	(revision 059ad166c9e6faec1fbf213925fe3c23cffd787d)
@@ -32,5 +32,5 @@
 
 	void __cfa_io_start( processor * proc ) {}
-	void __cfa_io_flush( processor * proc ) {}
+	bool __cfa_io_flush( processor * proc, bool ) {}
 	void __cfa_io_stop ( processor * proc ) {}
 
Index: libcfa/src/concurrency/kernel.cfa
===================================================================
--- libcfa/src/concurrency/kernel.cfa	(revision 1757f98358ab8f6f5bcdc337f12866d454f976a3)
+++ libcfa/src/concurrency/kernel.cfa	(revision 059ad166c9e6faec1fbf213925fe3c23cffd787d)
@@ -130,5 +130,5 @@
 extern void __cfa_io_start( processor * );
 extern bool __cfa_io_drain( processor * );
-extern void __cfa_io_flush( processor * );
+extern bool __cfa_io_flush( processor *, bool wait );
 extern void __cfa_io_stop ( processor * );
 static inline bool __maybe_io_drain( processor * );
@@ -197,5 +197,5 @@
 			if( !readyThread ) {
 				ready_schedule_lock();
-				__cfa_io_flush( this );
+				__cfa_io_flush( this, false );
 				ready_schedule_unlock();
 
@@ -251,5 +251,5 @@
 			if(this->io.pending && !this->io.dirty) {
 				ready_schedule_lock();
-				__cfa_io_flush( this );
+				__cfa_io_flush( this, false );
 				ready_schedule_unlock();
 			}
@@ -268,5 +268,5 @@
 
 				// If we can't find a thread, might as well flush any outstanding I/O
-				if(this->io.pending) { __cfa_io_flush( this ); }
+				if(this->io.pending) { __cfa_io_flush( this, false ); }
 
 				// Spin a little on I/O, just in case
@@ -363,5 +363,5 @@
 
 			if(this->io.pending && !this->io.dirty) {
-				__cfa_io_flush( this );
+				__cfa_io_flush( this, false );
 			}
 
Index: libcfa/src/concurrency/kernel_private.hfa
===================================================================
--- libcfa/src/concurrency/kernel_private.hfa	(revision 1757f98358ab8f6f5bcdc337f12866d454f976a3)
+++ libcfa/src/concurrency/kernel_private.hfa	(revision 059ad166c9e6faec1fbf213925fe3c23cffd787d)
@@ -39,4 +39,6 @@
 }
 
+// #define IO_URING_IDLE
+
 //-----------------------------------------------------------------------------
 // Scheduler
@@ -149,8 +151,4 @@
 	__atomic_store_n(ll, (bool)false, __ATOMIC_RELEASE);
 }
-
-
-
-
 
 //-----------------------------------------------------------------------
