sysctl: add boot_reason and cold_boot sysctl entries for arm64

Define boot_reason and cold_boot variables in the arm64 version
of setup.c so that arm64 targets can export the boot_reason and
cold_boot sysctl entries.

This feature is required by the qpnp-power-on driver.

Change-Id: Id2d4ff5b8caa2e6a35d4ac61e338963d602c8b84
Signed-off-by: David Collins <collinsd@codeaurora.org>
[osvaldob: resolved trival merge conflicts]
Signed-off-by: Osvaldo Banuelos <osvaldob@codeaurora.org>
This commit is contained in:
David Collins 2014-01-10 14:11:24 -08:00 committed by Rohit Vaswani
parent 8b04432318
commit d4b065ff47
4 changed files with 55 additions and 0 deletions

View file

@ -23,8 +23,10 @@ show up in /proc/sys/kernel:
- auto_msgmni
- bootloader_type [ X86 only ]
- bootloader_version [ X86 only ]
- boot_reason [ ARM and ARM64 only ]
- callhome [ S390 only ]
- cap_last_cap
- cold_boot [ ARM and ARM64 only ]
- core_pattern
- core_pipe_limit
- core_uses_pid
@ -158,6 +160,19 @@ Documentation/x86/boot.txt for additional information.
==============================================================
boot_reason:
ARM and ARM64 -- reason for device boot
A single bit will be set in the unsigned integer value to identify the
reason the device was booted / powered on. The value will be zero if this
feature is not supported on the ARM device being booted.
See the power-on-status field definitions in
Documentation/arm/msm/boot.txt for Qualcomm's family of devices.
==============================================================
callhome:
Controls the kernel's callhome behavior in case of a kernel panic.
@ -178,6 +193,16 @@ cap_last_cap
Highest valid capability of the running kernel. Exports
CAP_LAST_CAP from the kernel.
===============================================================
cold_boot
ARM and ARM64 -- indicator for system cold boot
A single bit will be set in the unsigned integer value to identify
whether the device was booted from a cold or warm state. Zero
indicating a warm boot and one indicating a cold boot.
==============================================================
core_pattern:

View file

@ -49,6 +49,9 @@ extern phys_addr_t arm64_dma_phys_limit;
#define ARCH_LOW_ADDRESS_LIMIT (arm64_dma_phys_limit - 1)
#endif /* __KERNEL__ */
extern unsigned int boot_reason;
extern unsigned int cold_boot;
struct debug_info {
/* Have we suspended stepping by a debugger? */
int suspended_step;

View file

@ -64,6 +64,12 @@
#include <asm/efi.h>
#include <asm/xen/hypervisor.h>
unsigned int boot_reason;
EXPORT_SYMBOL(boot_reason);
unsigned int cold_boot;
EXPORT_SYMBOL(cold_boot);
static const char *machine_name;
phys_addr_t __fdt_pointer __initdata;

View file

@ -1173,6 +1173,27 @@ static struct ctl_table kern_table[] = {
.extra2 = &one,
},
#endif
#if defined(CONFIG_ARM) || defined(CONFIG_ARM64)
{
.procname = "boot_reason",
.data = &boot_reason,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = proc_dointvec,
},
{
.procname = "cold_boot",
.data = &cold_boot,
.maxlen = sizeof(int),
.mode = 0444,
.proc_handler = proc_dointvec,
},
#endif
/*
* NOTE: do not add new entries to this table unless you have read
* Documentation/sysctl/ctl_unnumbered.txt
*/
{ }
};