lkml.org 
[lkml]   [2013]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH RT v2] x86/mce: Defer mce wakeups to threads for PREEMPT_RT
    From
    Date
    Grumble, somehow these emails got lost in the crowd.

    On Fri, 2013-04-26 at 10:24 +0200, Sebastian Andrzej Siewior wrote:
    > * 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.

    Yep, that doesn't look needed. Looking at the current code we have this
    commit:

    commit 4d899be584d4b4c5d6b49d655176b25cebf6ff1a
    Author: Tejun Heo <tj@kernel.org>
    Date: Fri Dec 21 17:57:05 2012 -0800

    x86/mce: don't use [delayed_]work_pending()

    There's no need to test whether a (delayed) work item in pending
    before queueing, flushing or cancelling it. Most uses are unnecessary
    and quite a few of them are buggy.

    Remove unnecessary pending tests from x86/mce. Only compile tested.

    v2: Local var work removed from mce_schedule_work() as suggested by
    Borislav.


    -- Steve




    \
     
     \ /
      Last update: 2013-05-02 17:01    [W:2.722 / U:0.064 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site