Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-30 Thread Rafael J. Wysocki
Hi, On Thursday, 30 November 2006 01:21, Rafael J. Wysocki wrote: On Thursday, 30 November 2006 00:55, Pavel Machek wrote: Hi! I do not like the counting idea; it should be simpler to just check if all the processes are still stopped. I thought about that but didn't

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-29 Thread Pavel Machek
On Mon 2006-11-27 21:02:38, Rafael J. Wysocki wrote: On Monday, 27 November 2006 11:50, Pavel Machek wrote: Hi! @@ -61,10 +60,13 @@ static inline void freeze_process(struct unsigned long flags; if (!freezing(p)) { - freeze(p); -

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-28 Thread Rafael J. Wysocki
Hi, On Monday, 27 November 2006 00:09, Rafael J. Wysocki wrote: On Sunday, 26 November 2006 20:48, Pavel Machek wrote: --snip-- @@ -128,6 +135,21 @@ static unsigned int try_to_freeze_tasks( } while_each_thread(g, p); read_unlock(tasklist_lock); yield();

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-27 Thread Pavel Machek
Hi! @@ -61,10 +60,13 @@ static inline void freeze_process(struct unsigned long flags; if (!freezing(p)) { - freeze(p); - spin_lock_irqsave(p-sighand-siglock, flags); - signal_wake_up(p, 0); - spin_unlock_irqrestore(p-sighand-siglock,

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-27 Thread Rafael J. Wysocki
On Monday, 27 November 2006 00:28, Pavel Machek wrote: Hi! If frozen is atomic_t, do we need memory barrier? I think so. For example on x86-64 atomic_read() is just a read. I'm not sure, but for x86-64 barriers are nops, anyway, IIRC. Well, last time I checked they were lfence and

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Rafael J. Wysocki
Hi, On Sunday, 26 November 2006 08:47, Pavel Machek wrote: Hi! Currently, the PF_FREEZE process flag is used to indicate that the process should enter the refrigerator as soon as possible. Unfortunately it is set by the freezer while the process may be changing its flags for another

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Rafael J. Wysocki
Hi, On Sunday, 26 November 2006 11:02, Rafael J. Wysocki wrote: On Sunday, 26 November 2006 08:47, Pavel Machek wrote: Hi! Currently, the PF_FREEZE process flag is used to indicate that the process should enter the refrigerator as soon as possible. Unfortunately it is set by

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Rafael J. Wysocki
Hi, On Sunday, 26 November 2006 12:15, Rafael J. Wysocki wrote: On Sunday, 26 November 2006 11:02, Rafael J. Wysocki wrote: On Sunday, 26 November 2006 08:47, Pavel Machek wrote: --snip-- Okay, I'll use atomic_t. Patch with atomic_t follows. The atomic_set(..., 0) are used to avoid

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Pavel Machek
Hi! Index: linux-2.6.19-rc6-mm1/kernel/power/process.c === --- linux-2.6.19-rc6-mm1.orig/kernel/power/process.c 2006-11-25 21:26:52.0 +0100 +++ linux-2.6.19-rc6-mm1/kernel/power/process.c 2006-11-26

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Pavel Machek
Hi! If frozen is atomic_t, do we need memory barrier? I think so. For example on x86-64 atomic_read() is just a read. I'm not sure, but for x86-64 barriers are nops, anyway, IIRC. @@ -128,6 +135,21 @@ static unsigned int try_to_freeze_tasks( } while_each_thread(g, p);

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-26 Thread Luca
On 11/26/06, Pavel Machek [EMAIL PROTECTED] wrote: === --- linux-2.6.19-rc6-mm1.orig/include/linux/sched.h +++ linux-2.6.19-rc6-mm1/include/linux/sched.h @@ -1065,6 +1065,9 @@ struct task_struct { #ifdef

Re: [Suspend-devel] [RFC][PATCH -mm 1/5] PM: Make freeze_processes SMP-safe

2006-11-25 Thread Pavel Machek
Hi! Currently, the PF_FREEZE process flag is used to indicate that the process should enter the refrigerator as soon as possible. Unfortunately it is set by the freezer while the process may be changing its flags for another reason and this may lead to a race between the freezer and the