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