€•9:Œsphinx.addnodes”Œdocument”“”)”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)”}”(hhh]”(hŒ pending_xref”“”)”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…””}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ$/translations/zh_CN/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)”}”(hhh]”hŒChinese (Traditional)”…””}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/zh_TW/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/it_IT/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ja_JP/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/ko_KR/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒSpanish”…””}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ$/translations/sp_SP/arch/arm64/kdump”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒ'crashkernel memory reservation on arm64”h]”hŒ'crashkernel memory reservation on arm64”…””}”(hh¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hh£hžhhŸŒ>/var/lib/git/docbuild/linux/Documentation/arch/arm64/kdump.rst”h KubhŒ paragraph”“”)”}”(hŒ#Author: Baoquan He ”h]”(hŒAuthor: Baoquan He <”…””}”(hh¹hžhhŸNh NubhŒ reference”“”)”}”(hŒbhe@redhat.com”h]”hŒbhe@redhat.com”…””}”(hhÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:bhe@redhat.com”uh1hÁhh¹ubhŒ>”…””}”(hh¹hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¸)”}”(hŒíKdump mechanism is used to capture a corrupted kernel vmcore so that it can be subsequently analyzed. In order to do this, a preliminarily reserved memory is needed to pre-load the kdump kernel and boot such kernel if corruption happens.”h]”hŒíKdump mechanism is used to capture a corrupted kernel vmcore so that it can be subsequently analyzed. In order to do this, a preliminarily reserved memory is needed to pre-load the kdump kernel and boot such kernel if corruption happens.”…””}”(hhÝhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khh£hžhubh¸)”}”(hŒœThat reserved memory for kdump is adapted to be able to minimally accommodate the kdump kernel and the user space programs needed for the vmcore collection.”h]”hŒœThat reserved memory for kdump is adapted to be able to minimally accommodate the kdump kernel and the user space programs needed for the vmcore collection.”…””}”(hhëhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K hh£hžhubh¢)”}”(hhh]”(h§)”}”(hŒKernel parameter”h]”hŒKernel parameter”…””}”(hhühžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hhùhžhhŸh¶h Kubh¸)”}”(hXThrough the kernel parameters below, memory can be reserved accordingly during the early stage of the first kernel booting so that a continuous large chunk of memomy can be found. The low memory reservation needs to be considered if the crashkernel is reserved from the high memory area.”h]”hXThrough the kernel parameters below, memory can be reserved accordingly during the early stage of the first kernel booting so that a continuous large chunk of memomy can be found. The low memory reservation needs to be considered if the crashkernel is reserved from the high memory area.”…””}”(hj hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhhùhžhubhŒ bullet_list”“”)”}”(hhh]”(hŒ list_item”“”)”}”(hŒcrashkernel=size@offset”h]”h¸)”}”(hj!h]”hÂ)”}”(hj!h]”hŒcrashkernel=size@offset”…””}”(hj&hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:crashkernel=size@offset”uh1hÁhj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhžhhŸh¶h Nubj)”}”(hŒcrashkernel=size”h]”h¸)”}”(hjCh]”hŒcrashkernel=size”…””}”(hjEhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhžhhŸh¶h Nubj)”}”(hŒ+crashkernel=size,high crashkernel=size,low ”h]”h¸)”}”(hŒ*crashkernel=size,high crashkernel=size,low”h]”hŒ*crashkernel=size,high crashkernel=size,low”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KhjXubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ-”uh1jhŸh¶h Khhùhžhubeh}”(h]”Œkernel-parameter”ah ]”h"]”Œkernel parameter”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒLow memory and high memory”h]”hŒLow memory and high memory”…””}”(hjƒhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj€hžhhŸh¶h Kubh¸)”}”(hX&For kdump reservations, low memory is the memory area under a specific limit, usually decided by the accessible address bits of the DMA-capable devices needed by the kdump kernel to run. Those devices not related to vmcore dumping can be ignored. On arm64, the low memory upper bound is not fixed: it is 1G on the RPi4 platform but 4G on most other systems. On special kernels built with CONFIG_ZONE_(DMA|DMA32) disabled, the whole system RAM is low memory. Outside of the low memory described above, the rest of system RAM is considered high memory.”h]”hX&For kdump reservations, low memory is the memory area under a specific limit, usually decided by the accessible address bits of the DMA-capable devices needed by the kdump kernel to run. Those devices not related to vmcore dumping can be ignored. On arm64, the low memory upper bound is not fixed: it is 1G on the RPi4 platform but 4G on most other systems. On special kernels built with CONFIG_ZONE_(DMA|DMA32) disabled, the whole system RAM is low memory. Outside of the low memory described above, the rest of system RAM is considered high memory.”…””}”(hj‘hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h Khj€hžhubeh}”(h]”Œlow-memory-and-high-memory”ah ]”h"]”Œlow memory and high memory”ah$]”h&]”uh1h¡hh£hžhhŸh¶h Kubh¢)”}”(hhh]”(h§)”}”(hŒImplementation”h]”hŒImplementation”…””}”(hjªhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj§hžhhŸh¶h K)ubh¢)”}”(hhh]”(h§)”}”(hŒ1) crashkernel=size@offset”h]”(hŒ1) ”…””}”(hj»hžhhŸNh NubhÂ)”}”(hŒcrashkernel=size@offset”h]”hŒcrashkernel=size@offset”…””}”(hjÃhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”Œrefuri”Œmailto:crashkernel=size@offset”uh1hÁhj»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj¸hžhhŸh¶h K,ubh¸)”}”(hŒaThe crashkernel memory must be reserved at the user-specified region or fail if already occupied.”h]”hŒaThe crashkernel memory must be reserved at the user-specified region or fail if already occupied.”…””}”(hjÙhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K.hj¸hžhubeh}”(h]”Œcrashkernel-size-offset”ah ]”h"]”Œ1) crashkernel=size@offset”ah$]”h&]”uh1h¡hj§hžhhŸh¶h K,ubh¢)”}”(hhh]”(h§)”}”(hŒ2) crashkernel=size”h]”hŒ2) crashkernel=size”…””}”(hjòhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hjïhžhhŸh¶h K3ubh¸)”}”(hŒgThe crashkernel memory region will be reserved in any available position according to the search order:”h]”hŒgThe crashkernel memory region will be reserved in any available position according to the search order:”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K5hjïhžhubh¸)”}”(hŒaFirstly, the kernel searches the low memory area for an available region with the specified size.”h]”hŒaFirstly, the kernel searches the low memory area for an available region with the specified size.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K8hjïhžhubh¸)”}”(hXMIf searching for low memory fails, the kernel falls back to searching the high memory area for an available region of the specified size. If the reservation in high memory succeeds, a default size reservation in the low memory will be done. Currently the default size is 128M, sufficient for the low memory needs of the kdump kernel.”h]”hXMIf searching for low memory fails, the kernel falls back to searching the high memory area for an available region of the specified size. If the reservation in high memory succeeds, a default size reservation in the low memory will be done. Currently the default size is 128M, sufficient for the low memory needs of the kdump kernel.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K;hjïhžhubh¸)”}”(hŒ§Note: crashkernel=size is the recommended option for crashkernel kernel reservations. The user would not need to know the system memory layout for a specific platform.”h]”hŒ§Note: crashkernel=size is the recommended option for crashkernel kernel reservations. The user would not need to know the system memory layout for a specific platform.”…””}”(hj*hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KAhjïhžhubeh}”(h]”Œcrashkernel-size”ah ]”h"]”Œ2) crashkernel=size”ah$]”h&]”uh1h¡hj§hžhhŸh¶h K3ubh¢)”}”(hhh]”(h§)”}”(hŒ-3) crashkernel=size,high crashkernel=size,low”h]”hŒ-3) crashkernel=size,high crashkernel=size,low”…””}”(hjChžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¦hj@hžhhŸh¶h KFubh¸)”}”(hX8crashkernel=size,(high|low) are an important supplement to crashkernel=size. They allows the user to specify how much memory needs to be allocated from the high memory and low memory respectively. On many systems the low memory is precious and crashkernel reservations from this area should be kept to a minimum.”h]”hX8crashkernel=size,(high|low) are an important supplement to crashkernel=size. They allows the user to specify how much memory needs to be allocated from the high memory and low memory respectively. On many systems the low memory is precious and crashkernel reservations from this area should be kept to a minimum.”…””}”(hjQhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KHhj@hžhubh¸)”}”(hŒ¹To reserve memory for crashkernel=size,high, searching is first attempted from the high memory region. If the reservation succeeds, the low memory reservation will be done subsequently.”h]”hŒ¹To reserve memory for crashkernel=size,high, searching is first attempted from the high memory region. If the reservation succeeds, the low memory reservation will be done subsequently.”…””}”(hj_hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KNhj@hžhubh¸)”}”(hŒÌIf reservation from the high memory failed, the kernel falls back to searching the low memory with the specified size in crashkernel=,high. If it succeeds, no further reservation for low memory is needed.”h]”hŒÌIf reservation from the high memory failed, the kernel falls back to searching the low memory with the specified size in crashkernel=,high. If it succeeds, no further reservation for low memory is needed.”…””}”(hjmhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KRhj@hžhubh¸)”}”(hŒNotes:”h]”hŒNotes:”…””}”(hj{hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KVhj@hžhubj)”}”(hhh]”(j)”}”(hŒeIf crashkernel=,low is not specified, the default low memory reservation will be done automatically. ”h]”h¸)”}”(hŒdIf crashkernel=,low is not specified, the default low memory reservation will be done automatically.”h]”hŒdIf crashkernel=,low is not specified, the default low memory reservation will be done automatically.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h KXhjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰hžhhŸh¶h Nubj)”}”(hŒeif crashkernel=0,low is specified, it means that the low memory reservation is omitted intentionally.”h]”h¸)”}”(hŒeif crashkernel=0,low is specified, it means that the low memory reservation is omitted intentionally.”h]”hŒeif crashkernel=0,low is specified, it means that the low memory reservation is omitted intentionally.”…””}”(hj¨hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h·hŸh¶h K[hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰hžhhŸh¶h Nubeh}”(h]”h ]”h"]”h$]”h&]”jvjwuh1jhŸh¶h KXhj@hžhubeh}”(h]”Œ*crashkernel-size-high-crashkernel-size-low”ah ]”h"]”Œ-3) crashkernel=size,high crashkernel=size,low”ah$]”h&]”uh1h¡hj§hžhhŸh¶h KFubeh}”(h]”Œimplementation”ah ]”h"]”Œimplementation”ah$]”h&]”uh1h¡hh£hžhhŸh¶h K)ubeh}”(h]”Œ'crashkernel-memory-reservation-on-arm64”ah ]”h"]”Œ'crashkernel memory reservation on arm64”ah$]”h&]”uh1h¡hhhžhhŸh¶h Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”h¶uh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)”}”(h¦NŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jýŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”h¶Œ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œrefids”}”Œnameids”}”(j×jÔj}jzj¤j¡jÏjÌjìjéj=j:jÇjÄuŒ nametypes”}”(j׉j}‰j¤‰jωjì‰j=‰jljuh}”(jÔh£jzhùj¡j€jÌj§jéj¸j:jïjÄj@uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nhžhub.