37ddd5d053
This changes the way we calculate how much space to reserve for the pHyp dump. Currently we reserve 256MB only. With this change, the code first checks to see if an amount has been specified on the boot command line with the "phyp_dump_reserve_size" option, and if so, uses that much. Otherwise it computes 5% of total ram and rounds it down to a multiple of 256MB, and uses the larger of that or 256MB. This is for large systems with a lot of memory (10GB or more). The aim is to have more space available for the kernel on reboot on machines with more resources. Although the dump will be collected pretty fast and the memory released really early on allowing the machine to have the full memory available, this alleviates any issues that can be caused by having way too little memory on very very large systems during those few minutes. Signed-off-by: Manish Ahuja <mahuja@us.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
48 lines
1.4 KiB
C
48 lines
1.4 KiB
C
/*
|
|
* Hypervisor-assisted dump
|
|
*
|
|
* Linas Vepstas, Manish Ahuja 2008
|
|
* Copyright 2008 IBM Corp.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
|
|
#ifndef _PPC64_PHYP_DUMP_H
|
|
#define _PPC64_PHYP_DUMP_H
|
|
|
|
#ifdef CONFIG_PHYP_DUMP
|
|
|
|
/* The RMR region will be saved for later dumping
|
|
* whenever the kernel crashes. Set this to 256MB. */
|
|
#define PHYP_DUMP_RMR_START 0x0
|
|
#define PHYP_DUMP_RMR_END (1UL<<28)
|
|
|
|
struct phyp_dump {
|
|
/* Memory that is reserved during very early boot. */
|
|
unsigned long init_reserve_start;
|
|
unsigned long init_reserve_size;
|
|
/* cmd line options during boot */
|
|
unsigned long reserve_bootvar;
|
|
unsigned long phyp_dump_at_boot;
|
|
/* Check status during boot if dump supported, active & present*/
|
|
unsigned long phyp_dump_configured;
|
|
unsigned long phyp_dump_is_active;
|
|
/* store cpu & hpte size */
|
|
unsigned long cpu_state_size;
|
|
unsigned long hpte_region_size;
|
|
/* previous scratch area values */
|
|
unsigned long reserved_scratch_addr;
|
|
unsigned long reserved_scratch_size;
|
|
};
|
|
|
|
extern struct phyp_dump *phyp_dump_info;
|
|
|
|
int early_init_dt_scan_phyp_dump(unsigned long node,
|
|
const char *uname, int depth, void *data);
|
|
|
|
#endif /* CONFIG_PHYP_DUMP */
|
|
#endif /* _PPC64_PHYP_DUMP_H */
|