Messages in this thread Patch in this message | | | Date | Fri, 26 Apr 2013 10:24:07 +0200 | From | Sebastian Andrzej Siewior <> | Subject | Re: [PATCH RT v2] x86/mce: Defer mce wakeups to threads for PREEMPT_RT |
| |
* Steven Rostedt | 2013-04-11 14:33:34 [-0400]:
>diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c >index e8d8ad0..060e473 100644 >--- a/arch/x86/kernel/cpu/mcheck/mce.c >+++ b/arch/x86/kernel/cpu/mcheck/mce.c >@@ -1308,6 +1309,61 @@ static void mce_do_trigger(struct work_struct *work) > > static DECLARE_WORK(mce_trigger_work, mce_do_trigger); > >+static void __mce_notify_work(void) >+{ >+ /* Not more than two messages every minute */ >+ static DEFINE_RATELIMIT_STATE(ratelimit, 60*HZ, 2); >+ >+ /* wake processes polling /dev/mcelog */ >+ wake_up_interruptible(&mce_chrdev_wait); >+ >+ /* >+ * There is no risk of missing notifications because >+ * work_pending is always cleared before the function is >+ * executed. >+ */ >+ if (mce_helper[0] && !work_pending(&mce_trigger_work)) >+ schedule_work(&mce_trigger_work);
Why is here this work_pending() check? You can't enqueue a work item twice.
Sebastian
| |