[linux-pm] [PATCH] Rt-tester makes freezing processes fail.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 14 Jul 2006 09:18:43 +1000
Nigel Cunningham <nigel at suspend2.net> 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 at suspend2.net>
> 
>  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 at gmail.com>

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 at gmail.com>
Cc: Ingo Molnar <mingo at redhat.com>
Acked-by: Thomas Gleixner <tglx at linutronix.de>
Signed-off-by: Andrew Morton <akpm at osdl.org>
---

 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);
_



[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux