powerpc: eeh_event: convert semaphore to completion
For this use case, completions and semaphores are equivalent, but semaphores are an awkward interface that should generally be avoided, so use the completion instead. Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
Родитель
d1f75a9684
Коммит
2fea82db11
|
@ -35,7 +35,7 @@
|
|||
*/
|
||||
|
||||
static DEFINE_SPINLOCK(eeh_eventlist_lock);
|
||||
static struct semaphore eeh_eventlist_sem;
|
||||
static DECLARE_COMPLETION(eeh_eventlist_event);
|
||||
static LIST_HEAD(eeh_eventlist);
|
||||
|
||||
/**
|
||||
|
@ -55,7 +55,7 @@ static int eeh_event_handler(void * dummy)
|
|||
struct eeh_pe *pe;
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
if (down_interruptible(&eeh_eventlist_sem))
|
||||
if (wait_for_completion_interruptible(&eeh_eventlist_event))
|
||||
break;
|
||||
|
||||
/* Fetch EEH event from the queue */
|
||||
|
@ -102,9 +102,6 @@ int eeh_event_init(void)
|
|||
struct task_struct *t;
|
||||
int ret = 0;
|
||||
|
||||
/* Initialize semaphore */
|
||||
sema_init(&eeh_eventlist_sem, 0);
|
||||
|
||||
t = kthread_run(eeh_event_handler, NULL, "eehd");
|
||||
if (IS_ERR(t)) {
|
||||
ret = PTR_ERR(t);
|
||||
|
@ -142,7 +139,7 @@ int eeh_send_failure_event(struct eeh_pe *pe)
|
|||
spin_unlock_irqrestore(&eeh_eventlist_lock, flags);
|
||||
|
||||
/* For EEH deamon to knick in */
|
||||
up(&eeh_eventlist_sem);
|
||||
complete(&eeh_eventlist_event);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче