All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/4] powerpc: Update DSCR on all CPUs when writing sysfs dscr_default
@ 2012-09-04  2:47 Anton Blanchard
  2012-09-04  2:48 ` [PATCH 2/4] powerpc: Keep thread.dscr and thread.dscr_inherit in sync Anton Blanchard
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Anton Blanchard @ 2012-09-04  2:47 UTC (permalink / raw)
  To: benh, paulus; +Cc: linuxppc-dev


Writing to dscr_default in sysfs doesn't actually change the DSCR -
we rely on a context switch on each CPU to do the work. There is no
guarantee we will get a context switch in a reasonable amount of time
so fire off an IPI to force an immediate change.

This issue was found with the following test case:

http://ozlabs.org/~anton/junkcode/dscr_explicit_test.c

Signed-off-by: Anton Blanchard <anton@samba.org>  
Cc: <stable@kernel.org> # 3.0+
---

Index: b/arch/powerpc/kernel/sysfs.c
===================================================================
--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -194,6 +194,12 @@ static ssize_t show_dscr_default(struct
 	return sprintf(buf, "%lx\n", dscr_default);
 }
 
+static void update_dscr(void *dummy)
+{
+	if (!current->thread.dscr_inherit)
+		mtspr(SPRN_DSCR, dscr_default);
+}
+
 static ssize_t __used store_dscr_default(struct device *dev,
 		struct device_attribute *attr, const char *buf,
 		size_t count)
@@ -206,6 +212,8 @@ static ssize_t __used store_dscr_default
 		return -EINVAL;
 	dscr_default = val;
 
+	on_each_cpu(update_dscr, NULL, 1);
+
 	return count;
 }
 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-09-04  2:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-04  2:47 [PATCH 1/4] powerpc: Update DSCR on all CPUs when writing sysfs dscr_default Anton Blanchard
2012-09-04  2:48 ` [PATCH 2/4] powerpc: Keep thread.dscr and thread.dscr_inherit in sync Anton Blanchard
2012-09-04  2:49 ` [PATCH 3/4] powerpc: Fix DSCR inheritance in copy_thread() Anton Blanchard
2012-09-04  2:51 ` [PATCH 4/4] powerpc: Restore correct DSCR in context switch Anton Blanchard

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.