Re: [PATCH] Rt-tester makes freezing processes fail.

From: Andrew Morton
Date: Thu Jul 13 2006 - 19:36:19 EST


On Fri, 14 Jul 2006 09:18:43 +1000
Nigel Cunningham <nigel@xxxxxxxxxxxx> wrote:

> Compiling in the rt-tester currently makes freezing processes fail.
> I don't think there's anything wrong with it running during
> suspending, so adding PF_NOFREEZE to the flags set seems to be the
> right solution.
>
> Signed-off-by: Nigel Cunningham <nigel@xxxxxxxxxxxx>
>
> rtmutex-tester.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> diff -ruNp 9971-rt-tester.patch-old/kernel/rtmutex-tester.c 9971-rt-tester.patch-new/kernel/rtmutex-tester.c
> --- 9971-rt-tester.patch-old/kernel/rtmutex-tester.c 2006-07-07 10:27:46.000000000 +1000
> +++ 9971-rt-tester.patch-new/kernel/rtmutex-tester.c 2006-07-14 07:48:01.000000000 +1000
> @@ -259,7 +259,7 @@ static int test_func(void *data)
> struct test_thread_data *td = data;
> int ret;
>
> - current->flags |= PF_MUTEX_TESTER;
> + current->flags |= PF_MUTEX_TESTER | PF_NOFREEZE;
> allow_signal(SIGHUP);
>
> for(;;) {


I yesterday queued up the below patch. Which approach is most appropriate?



From: Luca Tettamanti <kronos.it@xxxxxxxxx>

When CONFIG_RT_MUTEX_TESTER is enabled kernel refuses to suspend the
machine because it's unable to freeze the rt-test-* threads.

Add try_to_freeze() after schedule() so that the threads will be freezed
correctly; I've tested the patch and it lets the notebook suspends and
resumes nicely.

Signed-off-by: Luca Tettamanti <kronos.it@xxxxxxxxx>
Cc: Ingo Molnar <mingo@xxxxxxxxxx>
Acked-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
---

kernel/rtmutex-tester.c | 1 +
1 files changed, 1 insertion(+)

diff -puN kernel/rtmutex-tester.c~add-try_to_freeze-to-rt-test-kthreads kernel/rtmutex-tester.c
--- a/kernel/rtmutex-tester.c~add-try_to_freeze-to-rt-test-kthreads
+++ a/kernel/rtmutex-tester.c
@@ -275,6 +275,7 @@ static int test_func(void *data)

/* Wait for the next command to be executed */
schedule();
+ try_to_freeze();

if (signal_pending(current))
flush_signals(current);
_

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/