linux-bl808/include/linux
Bernhard Walle cba63c3089 Extended crashkernel command line
This patch adds a extended crashkernel syntax that makes the value of reserved
system RAM dependent on the system RAM itself:

    crashkernel=<range1>:<size1>[,<range2>:<size2>,...][@offset]
    range=start-[end]

For example:

    crashkernel=512M-2G:64M,2G-:128M

The motivation comes from distributors that configure their crashkernel
command line automatically with some configuration tool (YaST, you know ;)).
Of course that tool knows the value of System RAM, but if the user removes
RAM, then the system becomes unbootable or at least unusable and error
handling is very difficult.

This series implements this change for i386, x86_64, ia64, ppc64 and sh.  That
should be all platforms that support kdump in current mainline.  I tested all
platforms except sh due to the lack of a sh processor.

This patch:

This is the generic part of the patch.  It adds a parse_crashkernel() function
in kernel/kexec.c that is called by the architecture specific code that
actually reserves the memory.  That function takes the whole command line and
looks itself for "crashkernel=" in it.

If there are multiple occurrences, then the last one is taken.  The advantage
is that if you have a bootloader like lilo or elilo which allows you to append
a command line parameter but not to remove one (like in GRUB), then you can
add another crashkernel value for testing at the boot command line and this
one overwrites the command line in the configuration then.

Signed-off-by: Bernhard Walle <bwalle@suse.de>
Cc: Andi Kleen <ak@suse.de>
Cc: "Luck, Tony" <tony.luck@intel.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Vivek Goyal <vgoyal@in.ibm.com>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-10-19 11:53:49 -07:00
..
amba
byteorder
dvb
hdlc
isdn
lockd
mlx4
mmc
mtd
netfilter [NETFILTER]: xt_sctp: fix mistake to pass a pointer where array is required 2007-10-18 05:12:21 -07:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
rtc
spi
ssb
sunrpc
tc_act
tc_ematch
usb
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
acpi_pmtmr.h
adb.h
adfs_fs.h
adfs_fs_i.h
adfs_fs_sb.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio.h Remove struct task_struct::io_wait 2007-10-18 14:37:20 -07:00
aio_abi.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async_tx.h
ata.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel-ssc.h
atmel_pdc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bit_spinlock.h bit_spin_lock: use lock bitops 2007-10-18 14:37:29 -07:00
bitmap.h remove BITS_TO_TYPE macro 2007-10-19 11:53:42 -07:00
bitops.h remove BITS_TO_TYPE macro 2007-10-19 11:53:42 -07:00
bitrev.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h
bottom_half.h
bpqether.h
bsg.h
buffer_head.h
bug.h
cache.h
calc64.h
capability.h V3 file capabilities: alter behavior of cap_setpcap 2007-10-18 14:37:24 -07:00
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h Add cgroupstats 2007-10-19 11:53:36 -07:00
cgroup_subsys.h cgroups: implement namespace tracking subsystem 2007-10-19 11:53:37 -07:00
cgroupstats.h Add cgroupstats 2007-10-19 11:53:36 -07:00
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h Fix discrepancy between VDSO based gettimeofday() and sys_gettimeofday(). 2007-10-18 14:37:20 -07:00
cm4000_cs.h
cn_proc.h
coda.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coff.h
com20020.h
compat.h
compiler-gcc.h Replace __attribute_pure__ with __pure 2007-10-18 14:37:32 -07:00
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h Replace __attribute_pure__ with __pure 2007-10-18 14:37:32 -07:00
completion.h
comstats.h
concap.h
configfs.h
connector.h
console.h serial: turn serial console suspend a boot rather than compile time option 2007-10-18 14:37:19 -07:00
console_struct.h
consolemap.h
const.h
cpu.h Redefine {un}register_hotcpu_notifier() !HOTPLUG_CPU stubs 2007-10-18 14:37:28 -07:00
cpu_acct.h Task Control Groups: example CPU accounting subsystem 2007-10-19 11:53:36 -07:00
cpufreq.h
cpumask.h
cpuset.h hotplug cpu: migrate a task within its cpuset 2007-10-19 11:53:44 -07:00
cramfs_fs.h
cramfs_fs_sb.h
crash_dump.h
crc-ccitt.h
crc-itu-t.h
crc7.h
crc16.h
crc32.h
crc32c.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h Char: cyclades, fix some -W warnings 2007-10-18 14:37:26 -07:00
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dca.h
dcache.h
dccp.h
dcookies.h
debug_locks.h
debugfs.h
delay.h
delayacct.h Add cgroupstats 2007-10-19 11:53:36 -07:00
device-mapper.h
device.h
devpts_fs.h
dio.h
dirent.h
display.h
dlm.h
dlm_device.h
dlm_netlink.h
dm-ioctl.h
dm9000.h
dma-mapping.h stop using DMA_xxBIT_MASK 2007-10-18 14:37:21 -07:00
dmaengine.h
dmapool.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1wm.h
ds1286.h
ds17287rtc.h
dtlk.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_dir.h
efs_fs.h
efs_fs_i.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h ext3: support large blocksize up to PAGESIZE 2007-10-18 14:37:29 -07:00
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
ext4_fs.h ext4: Convert s_r_blocks_count and s_free_blocks_count 2007-10-17 18:50:02 -04:00
ext4_fs_extents.h ext4: Convert ext4_extent_idx.ei_leaf to ext4_extent_idx.ei_leaf_lo 2007-10-17 18:50:03 -04:00
ext4_fs_i.h ext4: Remove (partial, never completed) fragment support 2007-10-17 18:49:59 -04:00
ext4_fs_sb.h ext4: Remove (partial, never completed) fragment support 2007-10-17 18:49:59 -04:00
ext4_jbd2.h jbd2: JBD_XXX to JBD2_XXX naming cleanup 2007-10-17 18:49:58 -04:00
fadvise.h
falloc.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fd1772.h
fddidevice.h
fdreg.h
fib_rules.h
file.h
filter.h [NET]: Introduce the sk_detach_filter() call 2007-10-17 21:21:26 -07:00
firewire-cdev.h
firewire-constants.h
firmware.h
flat.h
font.h
freezer.h freezer: introduce freezer-friendly waiting macros 2007-10-18 14:37:19 -07:00
fs.h pid namespaces: introduce MS_KERNMOUNT flag 2007-10-19 11:53:38 -07:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fsl_devices.h
fsnotify.h
fuse.h fuse: add blksize field to fuse_attr 2007-10-18 14:37:31 -07:00
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio_keys.h
gpio_mouse.h
hardirq.h
harrier_defs.h
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hdsmart.h
hid-debug.h
hid.h get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h hrtimer: Rework hrtimer_nanosleep to make sys_compat_nanosleep easier 2007-10-18 22:54:18 +02:00
htirq.h
hugetlb.h
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-sgi.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
i2c-ocores.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2o-dev.h
i2o.h
i8k.h
ibmtr.h
icmp.h
icmpv6.h
ide.h ide: add IDE_HFLAG_LEGACY_IRQS host flag 2007-10-19 00:30:11 +02:00
idr.h
ieee80211.h
if.h
if_addr.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_shaper.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h
if_wanpipe.h
igmp.h
in.h
in6.h
in_route.h
inet.h
inet_diag.h
inet_lro.h
inetdevice.h
init.h
init_task.h Isolate the explicit usage of signal->pgrp 2007-10-19 11:53:43 -07:00
initrd.h
inotify.h
input-polldev.h
input.h get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
interrupt.h
io.h
ioc3.h
ioc4.h
ioctl.h
ioport.h
ioprio.h
ip.h
ip6_tunnel.h
ipc.h virtualization of sysv msg queues is incomplete 2007-10-19 11:53:48 -07:00
ipmi.h IPMI: add polled interface 2007-10-18 14:37:32 -07:00
ipmi_msgdefs.h
ipmi_smi.h IPMI: add 0.9 support 2007-10-18 14:37:32 -07:00
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irqflags.h
irqreturn.h
isa.h
isapnp.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h jbd: config_jbd_debug cannot create /proc entry 2007-10-19 11:53:35 -07:00
jbd2.h jbd2: JBD_XXX to JBD2_XXX naming cleanup 2007-10-17 18:49:58 -04:00
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
Kbuild Add cgroupstats 2007-10-19 11:53:36 -07:00
kd.h
kdebug.h
kdev_t.h
kernel.h
kernel_stat.h Add scaled time to taskstats based process accounting 2007-10-18 14:37:28 -07:00
kernelcapi.h
kexec.h Extended crashkernel command line 2007-10-19 11:53:49 -07:00
key-type.h
key-ui.h
key.h
keyboard.h Console keyboard events and accessibility 2007-10-19 11:53:33 -07:00
keyctl.h
kfifo.h
klist.h
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h
kprobes.h
kref.h
ks0108.h
kthread.h
ktime.h
kvm.h
kvm_para.h
lapb.h
latency.h
lcd.h
leds.h
lguest.h
lguest_bus.h
lguest_launcher.h
libata.h [libata] kill ata_sg_is_last() 2007-10-18 16:21:18 -04:00
libps2.h
license.h
limits.h
linkage.h
linux_logo.h
list.h kernel-api docbook: fix content problems 2007-10-19 11:53:35 -07:00
llc.h
lm_interface.h
lock_dlm_plock.h
lockdep.h workqueue: debug flushing deadlocks with lockdep 2007-10-19 11:53:38 -07:00
log2.h
loop.h
lp.h
lzo.h
m41t00.h
m48t86.h
magic.h Task Control Groups: basic task cgroup framework 2007-10-19 11:53:36 -07:00
major.h
maple.h
matroxfb.h
mbcache.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
memory.h
memory_hotplug.h
mempolicy.h Task Control Groups: make cpusets a client of cgroups 2007-10-19 11:53:36 -07:00
mempool.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mm.h
mm_inline.h
mm_types.h
mman.h
mmtimer.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
msdos_fs.h
msg.h ipc: store ipcs into IDRs 2007-10-19 11:53:44 -07:00
msi.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
n_r3964.h
namei.h
nbd.h
ncp.h
ncp_fs.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
netdevice.h Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6 2007-10-18 19:31:54 -07:00
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
netrom.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_acl.h
nfs4_mount.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_idmap.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfsacl.h
nfsd_idmap.h
nl80211.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h Console events and accessibility 2007-10-19 11:53:34 -07:00
nsc_gpio.h
nsproxy.h Make access to task's nsproxy lighter 2007-10-19 11:53:37 -07:00
nubus.h
numa.h
nvram.h
of.h remove asm/bitops.h includes 2007-10-19 11:53:41 -07:00
of_device.h
of_platform.h [SPARC/64]: Consolidate of_register_driver 2007-10-17 21:17:42 -07:00
oom.h
oprofile.h
page-flags.h
page-isolation.h
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport.h sysctl: parport remove binary paths 2007-10-18 14:37:23 -07:00
parport_pc.h
parser.h
pata_platform.h
patchkey.h
pci-acpi.h
pci.h
pci_hotplug.h
pci_ids.h
pci_regs.h
pcieport_if.h
pda_power.h
percpu.h
percpu_counter.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h Misc: phantom, improved data passing 2007-10-19 11:53:41 -07:00
phonedev.h
phy.h
phy_fixed.h
pid.h Uninline find_pid etc set of functions 2007-10-19 11:53:41 -07:00
pid_namespace.h pid namespaces: miscellaneous preparations for pid namespaces 2007-10-19 11:53:39 -07:00
pipe_fs_i.h
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
plist.h
pm.h PM: Move definition of struct pm_ops to suspend.h 2007-10-18 14:37:18 -07:00
pm_legacy.h
pmu.h
pnp.h
pnpbios.h
poison.h jbd2: JBD_XXX to JBD2_XXX naming cleanup 2007-10-17 18:49:58 -04:00
poll.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
prctl.h
preempt.h
prefetch.h
prio_heap.h Fix cpusets update_cpumask 2007-10-19 11:53:41 -07:00
prio_tree.h
proc_fs.h pid namespaces: initialize the namespace's proc_mnt 2007-10-19 11:53:40 -07:00
profile.h
proportions.h
ps2esdi.h
ptrace.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
raw.h
rbtree.h
rcupdate.h
reboot.h
reciprocal_div.h
reiserfs_acl.h
reiserfs_fs.h Use helpers to obtain task pid in printks 2007-10-19 11:53:43 -07:00
reiserfs_fs_i.h
reiserfs_fs_sb.h reiserfs: remove first_zero_hint 2007-10-19 11:53:35 -07:00
reiserfs_xattr.h
relay.h
resource.h
resume-trace.h
rfkill.h
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
sc26198.h
scatterlist.h
scc.h
sched.h Isolate the explicit usage of signal->pgrp 2007-10-19 11:53:43 -07:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h V3 file capabilities: alter behavior of cap_setpcap 2007-10-18 14:37:24 -07:00
selection.h
selinux.h
selinux_netlink.h
sem.h ipc: store ipcs into IDRs 2007-10-19 11:53:44 -07:00
seq_file.h
seqlock.h
serial.h
serial167.h
serial_8250.h
serial_core.h
serial_pnx8xxx.h
serial_reg.h
serialP.h
serio.h
shm.h ipc: store ipcs into IDRs 2007-10-19 11:53:44 -07:00
shmem_fs.h
signal.h
signalfd.h
skbuff.h
slab.h
slab_def.h
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smb.h
smb_fs.h
smb_fs_i.h
smb_fs_sb.h
smb_mount.h
smbno.h
smp.h
smp_lock.h
snmp.h
socket.h
sockios.h
som.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h
srcu.h
stacktrace.h
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
stringify.h
superhyway.h
suspend.h Hibernation: Check if ACPI is enabled during restore in the right place 2007-10-18 14:37:20 -07:00
svga.h
swap.h
swapops.h
synclink.h
sys.h
syscalls.h
sysctl.h sysctl: Error on bad sysctl tables 2007-10-18 14:37:23 -07:00
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h add-scaled-time-to-taskstats-based-process-accounting fix 2007-10-18 14:37:28 -07:00
taskstats_kern.h
tc.h
tcp.h
telephony.h
termios.h
textsearch.h
textsearch_fsm.h
tfrc.h
thread_info.h
threads.h
ticable.h
tick.h
tifm.h
time.h
timer.h
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
toshiba.h
transport_class.h
trdevice.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
types.h define first set of BIT* macros 2007-10-19 11:53:42 -07:00
uaccess.h
udf_fs.h
udf_fs_i.h
udf_fs_sb.h
udp.h
ufs_fs.h
uinput.h get rid of input BIT* duplicate defines 2007-10-19 11:53:42 -07:00
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unwind.h
usb.h
usb_usual.h
usbdevice_fs.h
user.h
user_namespace.h
utime.h
uts.h
utsname.h
vermagic.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev.h
videodev2.h
videotext.h
vmalloc.h
vmstat.h
vt.h Console events and accessibility 2007-10-19 11:53:34 -07:00
vt_buffer.h
vt_kern.h
wait.h
wanrouter.h
watchdog.h
wireless.h
workqueue.h workqueue: debug flushing deadlocks with lockdep 2007-10-19 11:53:38 -07:00
writeback.h
x25.h
xattr.h
xfrm.h
xilinxfb.h
yam.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h