Commit 39d20703 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Paul Mackerras
Browse files

[POWERPC] viopath: Use a completion in some more places



Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 9d561ed4
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ static void handleMonitorEvent(struct HvLpEvent *event);
 * if system_state is not SYSTEM_RUNNING, then wait_atomic is used ...
 */
struct alloc_parms {
	struct semaphore sem;
	struct completion done;
	int number;
	atomic_t wait_atomic;
	int used_wait_atomic;
@@ -465,7 +465,7 @@ static void viopath_donealloc(void *parm, int number)
	if (parmsp->used_wait_atomic)
		atomic_set(&parmsp->wait_atomic, 0);
	else
		up(&parmsp->sem);
		complete(&parmsp->done);
}

static int allocateEvents(HvLpIndex remoteLp, int numEvents)
@@ -477,7 +477,7 @@ static int allocateEvents(HvLpIndex remoteLp, int numEvents)
		atomic_set(&parms.wait_atomic, 1);
	} else {
		parms.used_wait_atomic = 0;
		init_MUTEX_LOCKED(&parms.sem);
		init_completion(&parms.done);
	}
	mf_allocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo, 250,	/* It would be nice to put a real number here! */
			    numEvents, &viopath_donealloc, &parms);
@@ -485,7 +485,7 @@ static int allocateEvents(HvLpIndex remoteLp, int numEvents)
		while (atomic_read(&parms.wait_atomic))
			mb();
	} else
		down(&parms.sem);
		wait_for_completion(&parms.done);
	return parms.number;
}

@@ -586,10 +586,10 @@ int viopath_close(HvLpIndex remoteLp, int subtype, int numReq)
	spin_unlock_irqrestore(&statuslock, flags);

	parms.used_wait_atomic = 0;
	init_MUTEX_LOCKED(&parms.sem);
	init_completion(&parms.done);
	mf_deallocate_lp_events(remoteLp, HvLpEvent_Type_VirtualIo,
			      numReq, &viopath_donealloc, &parms);
	down(&parms.sem);
	wait_for_completion(&parms.done);

	spin_lock_irqsave(&statuslock, flags);
	for (i = 0, numOpen = 0; i < VIO_MAX_SUBTYPES; i++)