Re: [ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Uwe Kleine-König
On Sat, Mar 07, 2015 at 12:25:29PM -0300, Gustavo Bittencourt wrote:
> On Sat, Mar 7, 2015 at 11:15 AM, Sebastian Andrzej Siewior
>  wrote:
> >
> > I'm pleased to announce the v3.18.9-rt4 patch set.
> >
> > Changes since v3.18.9-rt3
> >
> 
> Has v3.18.9-rt3 been released? If so, I missed the announcement.
Probably v3.18.9-rt3 is just v3.18.7-rt2 rebased to v3.18.9.

Best regards
Uwe

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Gustavo Bittencourt
On Sat, Mar 7, 2015 at 11:15 AM, Sebastian Andrzej Siewior
 wrote:
>
> I'm pleased to announce the v3.18.9-rt4 patch set.
>
> Changes since v3.18.9-rt3
>

Has v3.18.9-rt3 been released? If so, I missed the announcement.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Sebastian Andrzej Siewior
Dear RT folks!

I'm pleased to announce the v3.18.9-rt4 patch set.

Changes since v3.18.9-rt3

- The patch "rwsem-rt: Do not allow readers to nest" has been reverted.
  This means cpufreq works again.

- A fix in sound/audio to not disable interrupts as part of the locking.
  (Mike Galbraith)

- A fix in NFS which caused " sleeping function called from invalid
  context" warnings (Mike Galbraith)

- Thermal wake ups on X86 are now handled defred into thread context
  (Daniel Wagner)

- A ifdefs in lockdep self-test to avoid long "defined but not used"
  compiler warnings (Josh Cartwright)

- Fixed dead-lock handling of the ww_mutex (Mike Galbraith)

- The primary handler of mmc/sdhci is moved into the threaded one to
  avoid taking sleeping locks in IRQ contet. (Reported by Michal Šmucr)

- The IRQ-work handling has been updated to get rid of the warning
  triggered in FULL_NO_HZ mode (Reported by Carsten Emde & Luis Claudio
  R. Goncalves)

- "rcu torture" now compiles if enabled (Luis Claudio R. Goncalves)

- "Simple work queue" now disables interrupts during list handling

- The MCE check now uses the "Simple work queue" instead of its own
  thread for defered work (Daniel Wagner)

Known issues:

  - bcache is disabled.

  - lazy preempt on x86_64 leads to a crash with some load.

  - CPU hotplug works in general. Steven's test script however
deadlocks usually on the second invocation.

  - xor / raid_pq
I had max latency jumping up to 67563us on one CPU while the next
lower max was 58us. I tracked it down to module's init code of
xor and raid_pq. Both disable preemption while measuring the
measuring the performance of the individual implementation.


The delta patch against 3.18.9-rt3 is appended below and can be found here: 

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/incr/patch-3.18.9-rt3-rt4.patch.xz

The RT patch against 3.18.9 can be found here:

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patch-3.18.9-rt4.patch.xz

The split quilt queue is available at:

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patches-3.18.9-rt4.tar.xz

Sebastian

diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 718fc6cc6c64..d7f1c8316f94 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -18,7 +18,6 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 #include 
@@ -43,6 +42,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -1364,7 +1364,7 @@ static void mce_do_trigger(struct work_struct *work)
 
 static DECLARE_WORK(mce_trigger_work, mce_do_trigger);
 
-static void __mce_notify_work(void)
+static void __mce_notify_work(struct swork_event *event)
 {
/* Not more than two messages every minute */
static DEFINE_RATELIMIT_STATE(ratelimit, 60*HZ, 2);
@@ -1385,43 +1385,31 @@ static void __mce_notify_work(void)
 }
 
 #ifdef CONFIG_PREEMPT_RT_FULL
-struct task_struct *mce_notify_helper;
-
-static int mce_notify_helper_thread(void *unused)
-{
-   while (1) {
-   set_current_state(TASK_INTERRUPTIBLE);
-   schedule();
-   if (kthread_should_stop())
-   break;
-   __mce_notify_work();
-   }
-   return 0;
-}
+static bool notify_work_ready __read_mostly;
+static struct swork_event notify_work;
 
 static int mce_notify_work_init(void)
 {
-   mce_notify_helper = kthread_run(mce_notify_helper_thread, NULL,
-  "mce-notify");
-   if (!mce_notify_helper)
-   return -ENOMEM;
+   int err;
+
+   err = swork_get();
+   if (err)
+   return err;
 
+   INIT_SWORK(_work, __mce_notify_work);
+   notify_work_ready = true;
return 0;
 }
 
 static void mce_notify_work(void)
 {
-   if (WARN_ON_ONCE(!mce_notify_helper)) {
-   pr_info(HW_ERR "Machine check event before MCE init; 
ignored\n");
-   return;
-   }
-
-   wake_up_process(mce_notify_helper);
+   if (notify_work_ready)
+   swork_queue(_work);
 }
 #else
 static void mce_notify_work(void)
 {
-   __mce_notify_work();
+   __mce_notify_work(NULL);
 }
 static inline int mce_notify_work_init(void) { return 0; }
 #endif
@@ -2497,6 +2485,10 @@ static __init int mcheck_init_device(void)
goto err_out;
}
 
+   err = mce_notify_work_init();
+   if (err)
+   goto err_out;
+
if (!zalloc_cpumask_var(_device_initialized, GFP_KERNEL)) {
err = -ENOMEM;
goto err_out;
@@ -2533,15 +2525,8 @@ static __init int mcheck_init_device(void)
if (err)
goto err_register;
 
-   err = mce_notify_work_init();
-   if (err)
-   goto err_notify;
-
return 0;
 
-err_notify:
-   misc_deregister(_chrdev_device);
-
 err_register:

[ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Sebastian Andrzej Siewior
Dear RT folks!

I'm pleased to announce the v3.18.9-rt4 patch set.

Changes since v3.18.9-rt3

- The patch rwsem-rt: Do not allow readers to nest has been reverted.
  This means cpufreq works again.

- A fix in sound/audio to not disable interrupts as part of the locking.
  (Mike Galbraith)

- A fix in NFS which caused  sleeping function called from invalid
  context warnings (Mike Galbraith)

- Thermal wake ups on X86 are now handled defred into thread context
  (Daniel Wagner)

- A ifdefs in lockdep self-test to avoid long defined but not used
  compiler warnings (Josh Cartwright)

- Fixed dead-lock handling of the ww_mutex (Mike Galbraith)

- The primary handler of mmc/sdhci is moved into the threaded one to
  avoid taking sleeping locks in IRQ contet. (Reported by Michal Šmucr)

- The IRQ-work handling has been updated to get rid of the warning
  triggered in FULL_NO_HZ mode (Reported by Carsten Emde  Luis Claudio
  R. Goncalves)

- rcu torture now compiles if enabled (Luis Claudio R. Goncalves)

- Simple work queue now disables interrupts during list handling

- The MCE check now uses the Simple work queue instead of its own
  thread for defered work (Daniel Wagner)

Known issues:

  - bcache is disabled.

  - lazy preempt on x86_64 leads to a crash with some load.

  - CPU hotplug works in general. Steven's test script however
deadlocks usually on the second invocation.

  - xor / raid_pq
I had max latency jumping up to 67563us on one CPU while the next
lower max was 58us. I tracked it down to module's init code of
xor and raid_pq. Both disable preemption while measuring the
measuring the performance of the individual implementation.


The delta patch against 3.18.9-rt3 is appended below and can be found here: 

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/incr/patch-3.18.9-rt3-rt4.patch.xz

The RT patch against 3.18.9 can be found here:

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patch-3.18.9-rt4.patch.xz

The split quilt queue is available at:

   
https://www.kernel.org/pub/linux/kernel/projects/rt/3.18/patches-3.18.9-rt4.tar.xz

Sebastian

diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 718fc6cc6c64..d7f1c8316f94 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -18,7 +18,6 @@
 #include linux/rcupdate.h
 #include linux/kobject.h
 #include linux/uaccess.h
-#include linux/kthread.h
 #include linux/kdebug.h
 #include linux/kernel.h
 #include linux/percpu.h
@@ -43,6 +42,7 @@
 #include linux/irq_work.h
 #include linux/export.h
 #include linux/jiffies.h
+#include linux/work-simple.h
 
 #include asm/processor.h
 #include asm/mce.h
@@ -1364,7 +1364,7 @@ static void mce_do_trigger(struct work_struct *work)
 
 static DECLARE_WORK(mce_trigger_work, mce_do_trigger);
 
-static void __mce_notify_work(void)
+static void __mce_notify_work(struct swork_event *event)
 {
/* Not more than two messages every minute */
static DEFINE_RATELIMIT_STATE(ratelimit, 60*HZ, 2);
@@ -1385,43 +1385,31 @@ static void __mce_notify_work(void)
 }
 
 #ifdef CONFIG_PREEMPT_RT_FULL
-struct task_struct *mce_notify_helper;
-
-static int mce_notify_helper_thread(void *unused)
-{
-   while (1) {
-   set_current_state(TASK_INTERRUPTIBLE);
-   schedule();
-   if (kthread_should_stop())
-   break;
-   __mce_notify_work();
-   }
-   return 0;
-}
+static bool notify_work_ready __read_mostly;
+static struct swork_event notify_work;
 
 static int mce_notify_work_init(void)
 {
-   mce_notify_helper = kthread_run(mce_notify_helper_thread, NULL,
-  mce-notify);
-   if (!mce_notify_helper)
-   return -ENOMEM;
+   int err;
+
+   err = swork_get();
+   if (err)
+   return err;
 
+   INIT_SWORK(notify_work, __mce_notify_work);
+   notify_work_ready = true;
return 0;
 }
 
 static void mce_notify_work(void)
 {
-   if (WARN_ON_ONCE(!mce_notify_helper)) {
-   pr_info(HW_ERR Machine check event before MCE init; 
ignored\n);
-   return;
-   }
-
-   wake_up_process(mce_notify_helper);
+   if (notify_work_ready)
+   swork_queue(notify_work);
 }
 #else
 static void mce_notify_work(void)
 {
-   __mce_notify_work();
+   __mce_notify_work(NULL);
 }
 static inline int mce_notify_work_init(void) { return 0; }
 #endif
@@ -2497,6 +2485,10 @@ static __init int mcheck_init_device(void)
goto err_out;
}
 
+   err = mce_notify_work_init();
+   if (err)
+   goto err_out;
+
if (!zalloc_cpumask_var(mce_device_initialized, GFP_KERNEL)) {
err = -ENOMEM;
goto err_out;
@@ -2533,15 +2525,8 @@ static __init int mcheck_init_device(void)
if (err)
goto 

Re: [ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Gustavo Bittencourt
On Sat, Mar 7, 2015 at 11:15 AM, Sebastian Andrzej Siewior
bige...@linutronix.de wrote:

 I'm pleased to announce the v3.18.9-rt4 patch set.

 Changes since v3.18.9-rt3


Has v3.18.9-rt3 been released? If so, I missed the announcement.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [ANNOUNCE] 3.18.9-rt4

2015-03-07 Thread Uwe Kleine-König
On Sat, Mar 07, 2015 at 12:25:29PM -0300, Gustavo Bittencourt wrote:
 On Sat, Mar 7, 2015 at 11:15 AM, Sebastian Andrzej Siewior
 bige...@linutronix.de wrote:
 
  I'm pleased to announce the v3.18.9-rt4 patch set.
 
  Changes since v3.18.9-rt3
 
 
 Has v3.18.9-rt3 been released? If so, I missed the announcement.
Probably v3.18.9-rt3 is just v3.18.7-rt2 rebased to v3.18.9.

Best regards
Uwe

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/