# How to reserve memory for crashkernel?

## ManDay

I tried with the default 64M@16M because of what I've gathered from one of the various how-to's, but that disagrees with my kernel:

```
] Linux version 3.1.0 (root@slate) (gcc version 4.5.3 (Gentoo 4.5.3-r1 p1.0, pie-0.4.5) ) #3 SMP Thu Nov 17 14:17:30 CET 2011

] Command line: auto BOOT_IMAGE=Default ro root=801 rootfstype=ext3 i915.lvds_use_ssc=0 crashkernel=64M@16M

] BIOS-provided physical RAM map:

]  BIOS-e820: 0000000000000000 - 000000000009bc00 (usable)

]  BIOS-e820: 000000000009bc00 - 00000000000a0000 (reserved)

]  BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)

]  BIOS-e820: 0000000000100000 - 00000000dad9f000 (usable)

]  BIOS-e820: 00000000dad9f000 - 00000000dae26000 (ACPI NVS)

]  BIOS-e820: 00000000dae26000 - 00000000dae37000 (reserved)

]  BIOS-e820: 00000000dae37000 - 00000000dae4d000 (ACPI NVS)

]  BIOS-e820: 00000000dae4d000 - 00000000dae77000 (reserved)

]  BIOS-e820: 00000000dae77000 - 00000000dae88000 (ACPI NVS)

]  BIOS-e820: 00000000dae88000 - 00000000dae8b000 (reserved)

]  BIOS-e820: 00000000dae8b000 - 00000000dae8c000 (ACPI NVS)

]  BIOS-e820: 00000000dae8c000 - 00000000daea3000 (reserved)

]  BIOS-e820: 00000000daea3000 - 00000000daea5000 (ACPI NVS)

]  BIOS-e820: 00000000daea5000 - 00000000daea8000 (reserved)

]  BIOS-e820: 00000000daea8000 - 00000000daeab000 (ACPI data)

]  BIOS-e820: 00000000daeab000 - 00000000daeb0000 (reserved)

]  BIOS-e820: 00000000daeb0000 - 00000000daebf000 (ACPI NVS)

]  BIOS-e820: 00000000daebf000 - 00000000daf1b000 (reserved)

]  BIOS-e820: 00000000daf1b000 - 00000000db800000 (ACPI NVS)

]  BIOS-e820: 00000000db800000 - 00000000dc000000 (reserved)

]  BIOS-e820: 00000000dde00000 - 00000000e0000000 (reserved)

]  BIOS-e820: 00000000f8000000 - 00000000fc000000 (reserved)

]  BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)

]  BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved)

]  BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved)

]  BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)

]  BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)

]  BIOS-e820: 00000000ffa00000 - 00000000ffc00000 (reserved)

]  BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved)

]  BIOS-e820: 0000000100000000 - 0000000118000000 (usable)

] NX (Execute Disable) protection: active

] DMI 2.6 present.

] DMI: ASUSTeK Computer Inc. EP121/EP121, BIOS 501 01/26/2011

] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)

] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)

] No AGP bridge found

] last_pfn = 0x118000 max_arch_pfn = 0x400000000

] MTRR default type: uncachable

] MTRR fixed ranges enabled:

]   00000-9FFFF write-back

]   A0000-BFFFF uncachable

]   C0000-CFFFF write-protect

]   D0000-DFFFF uncachable

]   E0000-FFFFF write-protect

] MTRR variable ranges enabled:

]   0 base 000000000 mask F80000000 write-back

]   1 base 080000000 mask FC0000000 write-back

]   2 base 0C0000000 mask FE0000000 write-back

]   3 base 0DC000000 mask FFC000000 uncachable

]   4 base 100000000 mask FE0000000 write-back

]   5 base 118000000 mask FF8000000 uncachable

]   6 disabled

]   7 disabled

] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106

] e820 update range: 00000000dc000000 - 0000000100000000 (usable) ==> (reserved)

] last_pfn = 0xdad9f max_arch_pfn = 0x400000000

] initial memory mapped : 0 - 20000000

] Base memory trampoline at [ffff880000096000] 96000 size 20480

] init_memory_mapping: 0000000000000000-00000000dad9f000

]  0000000000 - 00dac00000 page 2M

]  00dac00000 - 00dad9f000 page 4k

] kernel direct mapping tables up to dad9f000 @ 1fffa000-20000000

] init_memory_mapping: 0000000100000000-0000000118000000

]  0100000000 - 0118000000 page 2M

] kernel direct mapping tables up to 118000000 @ dad99000-dad9f000

] crashkernel reservation failed - memory is in use.
```

In lack of any documentation on where to reserve memory I'm clueless now. I don't want to try out random values, might do more harm than good.

Can you perhaps explain why it is that this fails for me and where I should reserve the memory instead - or how to find that out.

Thank you

----------

## Aquous

You can simply say

```
crashkernel=64M
```

and the kernel will figure out where that 64M should be located.

----------

## ManDay

Ah, good. I will try that, thank you.

Does anyone know what means that this memory is in use? In use by what? Why? And how can I calculate for myself which memory will be used and which wont?

----------

## ManDay

That succeeded. However, the memory is now reserved at 832MB !! What in the world does that mean? Why so incredibly high? My kernel can't possibly require 832 MB!

Edit: Is it perhaps because of the i915 reserving memory?

----------

