aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/cpu
diff options
context:
space:
mode:
authorBorislav Petkov <borislav.petkov@amd.com>2012-04-27 09:37:25 -0400
committerBorislav Petkov <borislav.petkov@amd.com>2012-06-07 06:43:47 -0400
commit6e927361bd403dbf5f6a2668a2a07df1f1b2daff (patch)
treed689a592de1dd09f9e5e9077274106c3b8d7e196 /arch/x86/kernel/cpu
parent2c9c42fa98c283961b7f6b6542fb4bf0c0539e15 (diff)
x86, MCE, AMD: Make error_count read only
Until now, writing to error count caused the code to reset the thresholding bank to the current thresholding limit and start counting errors from the beginning. This is misleading and unclear, and can be accomplished by writing the old thresholding limit into ->threshold_limit. Make error_count read-only with the functionality to show the current error count. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Diffstat (limited to 'arch/x86/kernel/cpu')
-rw-r--r--arch/x86/kernel/cpu/mcheck/mce_amd.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
index a7204ef37223..e5ed2c7cb4de 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -369,14 +369,10 @@ static ssize_t show_error_count(struct threshold_block *b, char *buf)
369 (THRESHOLD_MAX - b->threshold_limit))); 369 (THRESHOLD_MAX - b->threshold_limit)));
370} 370}
371 371
372static ssize_t store_error_count(struct threshold_block *b, 372static struct threshold_attr error_count = {
373 const char *buf, size_t count) 373 .attr = {.name = __stringify(error_count), .mode = 0444 },
374{ 374 .show = show_error_count,
375 struct thresh_restart tr = { .b = b, .reset = 1, .old_limit = 0 }; 375};
376
377 smp_call_function_single(b->cpu, threshold_restart_bank, &tr, 1);
378 return 1;
379}
380 376
381#define RW_ATTR(val) \ 377#define RW_ATTR(val) \
382static struct threshold_attr val = { \ 378static struct threshold_attr val = { \
@@ -387,7 +383,6 @@ static struct threshold_attr val = { \
387 383
388RW_ATTR(interrupt_enable); 384RW_ATTR(interrupt_enable);
389RW_ATTR(threshold_limit); 385RW_ATTR(threshold_limit);
390RW_ATTR(error_count);
391 386
392static struct attribute *default_attrs[] = { 387static struct attribute *default_attrs[] = {
393 &threshold_limit.attr, 388 &threshold_limit.attr,