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); 66