Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
[linux-2.6] / arch / x86 / kernel / kdebugfs.c
1 /*
2  * Architecture specific debugfs files
3  *
4  * Copyright (C) 2007, Intel Corp.
5  *      Huang Ying <ying.huang@intel.com>
6  *
7  * This file is released under the GPLv2.
8  */
9
10 #include <linux/debugfs.h>
11 #include <linux/stat.h>
12 #include <linux/init.h>
13
14 #include <asm/setup.h>
15
16 #ifdef CONFIG_DEBUG_BOOT_PARAMS
17 static struct debugfs_blob_wrapper boot_params_blob = {
18         .data = &boot_params,
19         .size = sizeof(boot_params),
20 };
21
22 static int __init boot_params_kdebugfs_init(void)
23 {
24         int error;
25         struct dentry *dbp, *version, *data;
26
27         dbp = debugfs_create_dir("boot_params", NULL);
28         if (!dbp) {
29                 error = -ENOMEM;
30                 goto err_return;
31         }
32         version = debugfs_create_x16("version", S_IRUGO, dbp,
33                                      &boot_params.hdr.version);
34         if (!version) {
35                 error = -ENOMEM;
36                 goto err_dir;
37         }
38         data = debugfs_create_blob("data", S_IRUGO, dbp,
39                                    &boot_params_blob);
40         if (!data) {
41                 error = -ENOMEM;
42                 goto err_version;
43         }
44         return 0;
45 err_version:
46         debugfs_remove(version);
47 err_dir:
48         debugfs_remove(dbp);
49 err_return:
50         return error;
51 }
52 #endif
53
54 static int __init arch_kdebugfs_init(void)
55 {
56         int error = 0;
57
58 #ifdef CONFIG_DEBUG_BOOT_PARAMS
59         error = boot_params_kdebugfs_init();
60 #endif
61
62         return error;
63 }
64
65 arch_initcall(arch_kdebugfs_init);