kernel-ark/include/asm-powerpc/phyp_dump.h
Manish Ahuja 37ddd5d053 [POWERPC] pseries/phyp dump: Reserve a variable amount of space at boot
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>
2008-04-17 07:46:14 +10:00

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 */