All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <200811112256.58467.rusty@rustcorp.com.au>

diff --git a/a/1.txt b/N1/1.txt
index d5d8c4b..6e02e46 100644
Binary files a/a/1.txt and b/N1/1.txt differ
diff --git a/a/content_digest b/N1/content_digest
index 78d5c23..4634fe9 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,114 +1,29 @@
  "ref\0YrUCLn0F-xH.A.fhE.E4zFJB@chimera\0"
  "ref\0200811102355.42389.rjw@sisk.pl\0"
  "ref\020081111105214.GA15645@elte.hu\0"
- "ref\020081111105214.GA15645-X9Un+BFzKDI@public.gmane.org\0"
- "From\0Rusty Russell <rusty-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>\0"
+ "From\0Rusty Russell <rusty@rustcorp.com.au>\0"
  "Subject\0Re: [Bug #11989] Suspend failure on NForce4-based boards due to chanes in stop_machine\0"
  "Date\0Wed, 12 Nov 2008 14:09:49 +1030\0"
- "To\0Ingo Molnar <mingo-X9Un+BFzKDI@public.gmane.org>\0"
- "Cc\0Rafael J. Wysocki <rjw-KKrjLPT3xs0@public.gmane.org>"
-  Heiko Carstens <heiko.carstens-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>
-  Linux Kernel Mailing List <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  Kernel Testers List <kernel-testers-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
-  Vegard Nossum <vegard.nossum-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
-  Peter Zijlstra <a.p.zijlstra-/NLkJaSkS4VmR6Xm/wNWPw@public.gmane.org>
-  Oleg Nesterov <oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
-  Dmitry Adamushko <dmitry.adamushko-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
- " Andrew Morton <akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>\0"
+ "To\0Ingo Molnar <mingo@elte.hu>\0"
+ "Cc\0Rafael J. Wysocki <rjw@sisk.pl>"
+  Heiko Carstens <heiko.carstens@de.ibm.com>
+  Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
+  Kernel Testers List <kernel-testers@vger.kernel.org>
+  Vegard Nossum <vegard.nossum@gmail.com>
+  Peter Zijlstra <a.p.zijlstra@chello.nl>
+  Oleg Nesterov <oleg@redhat.com>
+  Dmitry Adamushko <dmitry.adamushko@gmail.com>
+ " Andrew Morton <akpm@linux-foundation.org>\0"
  "\00:1\0"
  "b\0"
- "On Tuesday 11 November 2008 21:22:14 Ingo Molnar wrote:\n"
- "> * Rafael J. Wysocki <rjw@sisk.pl> wrote:\n"
- "> > So, it evidently fails while re-enabling the non-boot CPU and not\n"
- "> > during disabling it as I thought before.\n"
- "\n"
+ "On Tuesday 11 November 2008 21:22:14 Ingo Molnar wrote:> * Rafael J. Wysocki <rjw@sisk.pl> wrote:> > So, it evidently fails while re-enabling the non-boot CPU and not> > during disabling it as I thought before.\n"
  "(Resend, due to HTML version previously)\n"
- "\n"
  "But what is calling stop_machine in that path?\n"
- "\n"
- "There *is* a race, but I don't think it could cause this (we should make a\n"
- "copy of active.fnret inside the lock before returning it).\n"
- "\n"
+ "There *is* a race, but I don't think it could cause this (we should make acopy of active.fnret inside the lock before returning it).\n"
  "Two patches: one fixes that race, the next adds debugging spew.\n"
- "\n"
  "stop_machine: fix race with return value\n"
- "\n"
- "We should not access active.fnret outside the lock; in theory the next\n"
- "stop_machine could overwrite it.\n"
- "\n"
- "Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>\n"
- "---\n"
- " kernel/stop_machine.c |    5 +++--\n"
- " 1 file changed, 3 insertions(+), 2 deletions(-)\n"
- "\n"
- "diff -r d7c9a15da615 kernel/stop_machine.c\n"
- "--- a/kernel/stop_machine.c\tMon Nov 10 09:47:45 2008 +1100\n"
- "+++ b/kernel/stop_machine.c\tTue Nov 11 23:19:47 2008 +1030\n"
- "@@ -112,7 +112,7 @@\n"
- " int __stop_machine(int (*fn)(void *), void *data, const cpumask_t *cpus)\n"
- " {\n"
- " \tstruct work_struct *sm_work;\n"
- "-\tint i;\n"
- "+\tint i, ret;\n"
- " \n"
- " \t/* Set up initial state. */\n"
- " \tmutex_lock(&lock);\n"
- "@@ -137,8 +137,9 @@\n"
- " \t/* This will release the thread on our CPU. */\n"
- " \tput_cpu();\n"
- " \tflush_workqueue(stop_machine_wq);\n"
- "+\tret = active.fnret;\n"
- " \tmutex_unlock(&lock);\n"
- "-\treturn active.fnret;\n"
- "+\treturn ret;\n"
- " }\n"
- " \n"
- " int stop_machine(int (*fn)(void *), void *data, const cpumask_t *cpus)\n"
- "===\n"
- "diff -r fe7dd39b1cff kernel/stop_machine.c\n"
- "--- a/kernel/stop_machine.c\tWed Nov 12 14:07:18 2008 +1030\n"
- "+++ b/kernel/stop_machine.c\tWed Nov 12 14:09:08 2008 +1030\n"
- "@@ -89,6 +89,8 @@\n"
- " \t\t\tcase STOPMACHINE_RUN:\n"
- " \t\t\t\t/* On multiple CPUs only a single error code\n"
- " \t\t\t\t * is needed to tell that something failed. */\n"
- "+\t\t\t\tprintk(\"stop_machine: %i running %p\\n\",\n"
- "+\t\t\t\t       smp_processor_id(), smdata->fn);\n"
- " \t\t\t\terr = smdata->fn(smdata->data);\n"
- " \t\t\t\tif (err)\n"
- " \t\t\t\t\tsmdata->fnret = err;\n"
- "@@ -106,6 +108,7 @@\n"
- " /* Callback for CPUs which aren't supposed to do anything. */\n"
- " static int chill(void *unused)\n"
- " {\n"
- "+\tprintk(\"stop_machine: %i chilling\\n\", smp_processor_id());\n"
- " \treturn 0;\n"
- " }\n"
- " \n"
- "@@ -126,17 +129,23 @@\n"
- " \n"
- " \tset_state(STOPMACHINE_PREPARE);\n"
- " \n"
- "+\tprintk(\"stop_machine: running on %i cpus:\\n\", num_threads);\n"
- "+\tdump_stack();\n"
- "+\n"
- " \t/* Schedule the stop_cpu work on all cpus: hold this CPU so one\n"
- " \t * doesn't hit this CPU until we're ready. */\n"
- " \tget_cpu();\n"
- " \tfor_each_online_cpu(i) {\n"
- "+\t\tprintk(\"stop_machine: setting up cpu %i\\n\", i);\n"
- " \t\tsm_work = percpu_ptr(stop_machine_work, i);\n"
- " \t\tINIT_WORK(sm_work, stop_cpu);\n"
- " \t\tqueue_work_on(i, stop_machine_wq, sm_work);\n"
- " \t}\n"
- " \t/* This will release the thread on our CPU. */\n"
- "+\tprintk(\"stop_machine: releasing CPU %i\\n\", smp_processor_id());\n"
- " \tput_cpu();\n"
- " \tflush_workqueue(stop_machine_wq);\n"
- "+\tprintk(\"stop_machine: done\\n\");\n"
- " \tret = active.fnret;\n"
- " \tmutex_unlock(&lock);\n"
- " \treturn ret;\n"
- "\0"
+ "We should not access active.fnret outside the lock; in theory the nextstop_machine could overwrite it.\n"
+ "Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>--- kernel/stop_machine.c |    5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)\n"
+ "diff -r d7c9a15da615 kernel/stop_machine.c--- a/kernel/stop_machine.c\tMon Nov 10 09:47:45 2008 +1100+++ b/kernel/stop_machine.c\tTue Nov 11 23:19:47 2008 +1030@@ -112,7 +112,7 @@ int __stop_machine(int (*fn)(void *), void *data, const cpumask_t *cpus) { \tstruct work_struct *sm_work;-\tint i;+\tint i, ret;  \t/* Set up initial state. */ \tmutex_lock(&lock);@@ -137,8 +137,9 @@ \t/* This will release the thread on our CPU. */ \tput_cpu(); \tflush_workqueue(stop_machine_wq);+\tret = active.fnret; \tmutex_unlock(&lock);-\treturn active.fnret;+\treturn ret; }  int stop_machine(int (*fn)(void *), void *data, const cpumask_t *cpus)===diff -r fe7dd39b1cff kernel/stop_machine.c--- a/kernel/stop_machine.c\tWed Nov 12 14:07:18 2008 +1030+++ b/kernel/stop_machine.c\tWed Nov 12 14:09:08 2008 +1030@@ -89,6 +89,8 @@ \t\t\tcase STOPMACHINE_RUN: \t\t\t\t/* On multiple CPUs only a single error code \t\t\t\t * is needed to tell that something failed. */+\t\t\t\tprintk(\"stop_machine: %i running %p\\n\",+\t\t\t\t       smp_processor_id(), smdata->fn); \t\t\t\terr = smdata->fn(smdata->data); \t\t\t\tif (err) \t\t\t\t\tsmdata->fnret = err;@@ -106,6 +108,7 @@ /* Callback for CPUs which aren't supposed to do anything. */ static int chill(void *unused) {+\tprintk(\"stop_machine: %i chilling\\n\", smp_processor_id()); \treturn 0; } @@ -126,17 +129,23 @@  \tset_state(STOPMACHINE_PREPARE); +\tprintk(\"stop_machine: running on %i cpus:\\n\", num_threads);+\tdump_stack();+ \t/* Schedule the stop_cpu work on all cpus: hold this CPU so one \t * doesn't hit this CPU until we're ready. */ \tget_cpu(); \tfor_each_online_cpu(i) {+\t\tprintk(\"stop_machine: setting up cpu %i\\n\", i); \t\tsm_work = percpu_ptr(stop_machine_work, i); \t\tINIT_WORK(sm_work, stop_cpu); \t\tqueue_work_on(i, stop_machine_wq, sm_work); \t} \t/* This will release the thread on our CPU. */+\tprintk(\"stop_machine: releasing CPU %i\\n\", smp_processor_id()); \tput_cpu(); \tflush_workqueue(stop_machine_wq);+\tprintk(\"stop_machine: done\\n\"); \tret = active.fnret; \tmutex_unlock(&lock); \treturn ret;\0\303\277\303\264\303\250\302\272{.n\303\207+\302\211\302\267\302\237\302\256\302\211\302\255\302\206+%\302\212\303\213\303\277\302\261\303\251\303\235\302\266\027\302\245\302\212w\303\277\302\272{.n\303\207+\302\211\302\267\302\245\302\212{\302\261\303\276G\302\253\302\235\303\251\303\277\302\212{ay\302\272\035\303\212\302\207\303\232\302\231\303\253,j\a\302\255\302\242f\302\243\302\242\302\267h\302\232\302\217\303\257\302\201\303\252\303\277\302\221\303\252\303\247z_\303\250\302\256\003(\302\255\303\251\302\232\302\216\302\212\303\235\302\242j\"\302\235\303\272\032\302\266\033m\302\247\303\277\303\277\302\276\a\302\253\303\276G\302\253\302\235\303\251\303\277\302\242\302\270?\302\231\302\250\303\250\302\255\303\232&\302\243\303\270\302\247~\302\217\303\241\302\266iO\302\225\303\246\302\254z\302\267\302\232v\303\230^\024\004\032\302\266\033m\302\247\303\277\303\277\303\203\f\303\277\302\266\303\254\303\277\302\242\302\270?\302\226I\302\245"
 
-8d470b4a458b051708ab6a5d816f2b282b722315784d0deb351c44453adfedc5
+8d4ee7ac9f082aa87d0e7df5e828a91af5234eeda2234c3507937c2ace1e9913

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.