Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d7d7433 authored by Huang, Ying's avatar Huang, Ying Committed by Ingo Molnar
Browse files

x86 boot : export boot_params via debugfs for debugging



This patch export the boot parameters via debugfs for debugging.

The files added are as follow:

boot_params/data    :  binary file for struct boot_params
boot_params/version :  boot protocol version

This patch is based on 2.6.24-rc5-mm1 and has been tested on i386 and
x86_64 platform.

This patch is based on the Peter Anvin's proposal.

Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 4d022e35
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -185,4 +185,11 @@ config DEFAULT_IO_DELAY_TYPE
	default IO_DELAY_TYPE_NONE
endif

config DEBUG_BOOT_PARAMS
	bool "Debug boot parameters"
	depends on DEBUG_KERNEL
	depends on DEBUG_FS
	help
	  This option will cause struct boot_params to be exported via debugfs.

endmenu
+1 −1
Original line number Diff line number Diff line
@@ -16,7 +16,7 @@ obj-$(CONFIG_X86_32) += sys_i386_32.o i386_ksyms_32.o
obj-$(CONFIG_X86_64)	+= sys_x86_64.o x8664_ksyms_64.o
obj-$(CONFIG_X86_64)	+= syscall_64.o vsyscall_64.o setup64.o
obj-y			+= pci-dma_$(BITS).o  bootflag.o e820_$(BITS).o
obj-y			+= quirks.o i8237.o topology.o
obj-y			+= quirks.o i8237.o topology.o kdebugfs.o
obj-y			+= alternative.o i8253.o
obj-$(CONFIG_X86_64)	+= pci-nommu_64.o bugs_64.o
obj-y			+= tsc_$(BITS).o io_delay.o rtc.o
+65 −0
Original line number Diff line number Diff line
/*
 * 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);
+4 −0
Original line number Diff line number Diff line
@@ -24,7 +24,11 @@
#include <asm/sections.h>
#include <asm/setup.h>

#ifndef CONFIG_DEBUG_BOOT_PARAMS
struct boot_params __initdata boot_params;
#else
struct boot_params boot_params;
#endif

cpumask_t cpu_initialized __cpuinitdata = CPU_MASK_NONE;

+4 −0
Original line number Diff line number Diff line
@@ -194,7 +194,11 @@ unsigned long saved_videomode;

static char __initdata command_line[COMMAND_LINE_SIZE];

#ifndef CONFIG_DEBUG_BOOT_PARAMS
struct boot_params __initdata boot_params;
#else
struct boot_params boot_params;
#endif

#if defined(CONFIG_EDD) || defined(CONFIG_EDD_MODULE)
struct edd edd;