cregit-Linux how code gets into the kernel

Release 4.8 arch/powerpc/include/asm/kexec.h

#ifndef _ASM_POWERPC_KEXEC_H

#define _ASM_POWERPC_KEXEC_H
#ifdef __KERNEL__

#if defined(CONFIG_FSL_BOOKE) || defined(CONFIG_44x)

/*
 * On FSL-BookE we setup a 1:1 mapping which covers the first 2GiB of memory
 * and therefore we can only deal with memory within this range
 */

#define KEXEC_SOURCE_MEMORY_LIMIT	(2 * 1024 * 1024 * 1024UL - 1)

#define KEXEC_DESTINATION_MEMORY_LIMIT	(2 * 1024 * 1024 * 1024UL - 1)

#define KEXEC_CONTROL_MEMORY_LIMIT	(2 * 1024 * 1024 * 1024UL - 1)

#else

/*
 * Maximum page that is mapped directly into kernel memory.
 * XXX: Since we copy virt we can use any page we allocate
 */

#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)

/*
 * Maximum address we can reach in physical address mode.
 * XXX: I want to allow initrd in highmem. Otherwise set to rmo on LPAR.
 */

#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)

/* Maximum address we can use for the control code buffer */
#ifdef __powerpc64__

#define KEXEC_CONTROL_MEMORY_LIMIT (-1UL)
#else
/* TASK_SIZE, probably left over from use_mm ?? */

#define KEXEC_CONTROL_MEMORY_LIMIT TASK_SIZE
#endif
#endif


#define KEXEC_CONTROL_PAGE_SIZE 4096

/* The native architecture */
#ifdef __powerpc64__

#define KEXEC_ARCH KEXEC_ARCH_PPC64
#else

#define KEXEC_ARCH KEXEC_ARCH_PPC
#endif


#define KEXEC_STATE_NONE 0

#define KEXEC_STATE_IRQS_OFF 1

#define KEXEC_STATE_REAL_MODE 2

#ifndef __ASSEMBLY__
#include <asm/reg.h>


typedef void (*crash_shutdown_t)(void);

#ifdef CONFIG_KEXEC

/*
 * This function is responsible for capturing register states if coming
 * via panic or invoking dump using sysrq-trigger.
 */

static inline void crash_setup_regs(struct pt_regs *newregs, struct pt_regs *oldregs) { if (oldregs) memcpy(newregs, oldregs, sizeof(*newregs)); else ppc_save_regs(newregs); }

Contributors

PersonTokensPropCommitsCommitProp
haren myneniharen myneni3485.00%150.00%
anton vorontsovanton vorontsov615.00%150.00%
Total40100.00%2100.00%

extern void kexec_smp_wait(void); /* get and clear naca physid, wait for master to copy new code to 0 */ extern int crashing_cpu; extern void crash_send_ipi(void (*crash_ipi_callback)(struct pt_regs *)); struct kimage; struct pt_regs; extern void default_machine_kexec(struct kimage *image); extern int default_machine_kexec_prepare(struct kimage *image); extern void default_machine_crash_shutdown(struct pt_regs *regs); extern int crash_shutdown_register(crash_shutdown_t handler); extern int crash_shutdown_unregister(crash_shutdown_t handler); extern void crash_kexec_secondary(struct pt_regs *regs); extern int overlaps_crashkernel(unsigned long start, unsigned long size); extern void reserve_crashkernel(void); extern void machine_kexec_mask_interrupts(void);
static inline bool kdump_in_progress(void) { return crashing_cpu >= 0; }

Contributors

PersonTokensPropCommitsCommitProp
hari bathinihari bathini14100.00%1100.00%
Total14100.00%1100.00%

#else /* !CONFIG_KEXEC */
static inline void crash_kexec_secondary(struct pt_regs *regs) { }

Contributors

PersonTokensPropCommitsCommitProp
david j. wilderdavid j. wilder11100.00%1100.00%
Total11100.00%1100.00%


static inline int overlaps_crashkernel(unsigned long start, unsigned long size) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
michael ellermanmichael ellerman18100.00%1100.00%
Total18100.00%1100.00%


static inline void reserve_crashkernel(void) { ; }

Contributors

PersonTokensPropCommitsCommitProp
michael ellermanmichael ellerman10100.00%1100.00%
Total10100.00%1100.00%


static inline int crash_shutdown_register(crash_shutdown_t handler) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
arnd bergmannarnd bergmann13100.00%1100.00%
Total13100.00%1100.00%


static inline int crash_shutdown_unregister(crash_shutdown_t handler) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
arnd bergmannarnd bergmann13100.00%1100.00%
Total13100.00%1100.00%


static inline bool kdump_in_progress(void) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
hari bathinihari bathini12100.00%1100.00%
Total12100.00%1100.00%

#endif /* CONFIG_KEXEC */ #endif /* ! __ASSEMBLY__ */ #endif /* __KERNEL__ */ #endif /* _ASM_POWERPC_KEXEC_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
michael ellermanmichael ellerman13936.68%628.57%
arnd bergmannarnd bergmann4211.08%29.52%
r sharadar sharada3910.29%14.76%
haren myneniharen myneni379.76%14.76%
michael neulingmichael neuling287.39%29.52%
hari bathinihari bathini266.86%14.76%
david j. wilderdavid j. wilder205.28%14.76%
sebastian andrzej siewiorsebastian andrzej siewior153.96%14.76%
suzuki k poulosesuzuki k poulose102.64%14.76%
matthew mcclintockmatthew mcclintock71.85%14.76%
anton vorontsovanton vorontsov71.85%14.76%
albert herranzalbert herranz51.32%14.76%
kumar galakumar gala30.79%14.76%
huang yinghuang ying10.26%14.76%
Total379100.00%21100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.