linux/mm/hwpoison-inject.c
<<
>>
Prefs
   1/* Inject a hwpoison memory failure on a arbitary pfn */
   2#include <linux/module.h>
   3#include <linux/debugfs.h>
   4#include <linux/kernel.h>
   5#include <linux/mm.h>
   6
   7static struct dentry *hwpoison_dir, *corrupt_pfn;
   8
   9static int hwpoison_inject(void *data, u64 val)
  10{
  11        if (!capable(CAP_SYS_ADMIN))
  12                return -EPERM;
  13        printk(KERN_INFO "Injecting memory failure at pfn %Lx\n", val);
  14        return __memory_failure(val, 18, 0);
  15}
  16
  17DEFINE_SIMPLE_ATTRIBUTE(hwpoison_fops, NULL, hwpoison_inject, "%lli\n");
  18
  19static void pfn_inject_exit(void)
  20{
  21        if (hwpoison_dir)
  22                debugfs_remove_recursive(hwpoison_dir);
  23}
  24
  25static int pfn_inject_init(void)
  26{
  27        hwpoison_dir = debugfs_create_dir("hwpoison", NULL);
  28        if (hwpoison_dir == NULL)
  29                return -ENOMEM;
  30        corrupt_pfn = debugfs_create_file("corrupt-pfn", 0600, hwpoison_dir,
  31                                          NULL, &hwpoison_fops);
  32        if (corrupt_pfn == NULL) {
  33                pfn_inject_exit();
  34                return -ENOMEM;
  35        }
  36        return 0;
  37}
  38
  39module_init(pfn_inject_init);
  40module_exit(pfn_inject_exit);
  41MODULE_LICENSE("GPL");
  42