diff options
Diffstat (limited to 'arch/powerpc/kernel/sysfs.c')
| -rw-r--r-- | arch/powerpc/kernel/sysfs.c | 10 | 
1 files changed, 10 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c index 3529446c2ab..8302af64921 100644 --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c @@ -194,6 +194,14 @@ static ssize_t show_dscr_default(struct device *dev,  	return sprintf(buf, "%lx\n", dscr_default);  } +static void update_dscr(void *dummy) +{ +	if (!current->thread.dscr_inherit) { +		current->thread.dscr = dscr_default; +		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 +214,8 @@ static ssize_t __used store_dscr_default(struct device *dev,  		return -EINVAL;  	dscr_default = val; +	on_each_cpu(update_dscr, NULL, 1); +  	return count;  }  |