]> git.karo-electronics.de Git - linux-beck.git/commitdiff
EDAC, mce_amd_inj: Add hw-injection attributes
authorBorislav Petkov <bp@suse.de>
Sat, 22 Nov 2014 10:35:26 +0000 (11:35 +0100)
committerBorislav Petkov <bp@suse.de>
Tue, 25 Nov 2014 12:09:42 +0000 (13:09 +0100)
Expose struct mce->inject_flags.

Signed-off-by: Borislav Petkov <bp@suse.de>
drivers/edac/mce_amd_inj.c

index 9b5ca92737a23314994a54295fc82a60f33b129f..5a758d63a8ccf1f4427f9893a0f959c5bf9d1565 100644 (file)
@@ -78,6 +78,44 @@ static int toggle_hw_mce_inject(unsigned int cpu, bool enable)
        return err;
 }
 
+static int flags_get(void *data, u64 *val)
+{
+       struct mce *m = (struct mce *)data;
+
+       *val = m->inject_flags;
+
+       return 0;
+}
+
+static int flags_set(void *data, u64 val)
+{
+       struct mce *m = (struct mce *)data;
+
+       m->inject_flags = (u8)val;
+       return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(flags_fops, flags_get, flags_set, "%llu\n");
+
+/*
+ * On which CPU to inject?
+ */
+MCE_INJECT_GET(extcpu);
+
+static int inj_extcpu_set(void *data, u64 val)
+{
+       struct mce *m = (struct mce *)data;
+
+       if (val >= nr_cpu_ids || !cpu_online(val)) {
+               pr_err("%s: Invalid CPU: %llu\n", __func__, val);
+               return -EINVAL;
+       }
+       m->extcpu = val;
+       return 0;
+}
+
+DEFINE_SIMPLE_ATTRIBUTE(extcpu_fops, inj_extcpu_get, inj_extcpu_set, "%llu\n");
+
 /*
  * This denotes into which bank we're injecting and triggers
  * the injection, at the same time.
@@ -119,6 +157,8 @@ struct dfs_node {
        { .name = "misc",       .fops = &misc_fops },
        { .name = "addr",       .fops = &addr_fops },
        { .name = "bank",       .fops = &bank_fops },
+       { .name = "flags",      .fops = &flags_fops },
+       { .name = "cpu",        .fops = &extcpu_fops },
 };
 
 static int __init init_mce_inject(void)