| /* | 
 |  * Architecture specific debugfs files | 
 |  * | 
 |  * Copyright (C) 2007, Intel Corp. | 
 |  *	Huang Ying <ying.huang@intel.com> | 
 |  * | 
 |  * This file is released under the GPLv2. | 
 |  */ | 
 |  | 
 | #include <linux/debugfs.h> | 
 | #include <linux/stat.h> | 
 | #include <linux/init.h> | 
 |  | 
 | #include <asm/setup.h> | 
 |  | 
 | #ifdef CONFIG_DEBUG_BOOT_PARAMS | 
 | static struct debugfs_blob_wrapper boot_params_blob = { | 
 | 	.data = &boot_params, | 
 | 	.size = sizeof(boot_params), | 
 | }; | 
 |  | 
 | static int __init boot_params_kdebugfs_init(void) | 
 | { | 
 | 	int error; | 
 | 	struct dentry *dbp, *version, *data; | 
 |  | 
 | 	dbp = debugfs_create_dir("boot_params", NULL); | 
 | 	if (!dbp) { | 
 | 		error = -ENOMEM; | 
 | 		goto err_return; | 
 | 	} | 
 | 	version = debugfs_create_x16("version", S_IRUGO, dbp, | 
 | 				     &boot_params.hdr.version); | 
 | 	if (!version) { | 
 | 		error = -ENOMEM; | 
 | 		goto err_dir; | 
 | 	} | 
 | 	data = debugfs_create_blob("data", S_IRUGO, dbp, | 
 | 				   &boot_params_blob); | 
 | 	if (!data) { | 
 | 		error = -ENOMEM; | 
 | 		goto err_version; | 
 | 	} | 
 | 	return 0; | 
 | err_version: | 
 | 	debugfs_remove(version); | 
 | err_dir: | 
 | 	debugfs_remove(dbp); | 
 | err_return: | 
 | 	return error; | 
 | } | 
 | #endif | 
 |  | 
 | static int __init arch_kdebugfs_init(void) | 
 | { | 
 | 	int error = 0; | 
 |  | 
 | #ifdef CONFIG_DEBUG_BOOT_PARAMS | 
 | 	error = boot_params_kdebugfs_init(); | 
 | #endif | 
 |  | 
 | 	return error; | 
 | } | 
 |  | 
 | arch_initcall(arch_kdebugfs_init); |