€•ëyŒ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”Œ1/translations/zh_CN/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/zh_TW/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/it_IT/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ja_JP/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/ko_KR/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/pt_BR/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ1/translations/sp_SP/driver-api/cxl/linux/overview”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒK/var/lib/git/docbuild/linux/Documentation/driver-api/cxl/linux/overview.rst”h´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒOverview”h]”hŒOverview”…”�”}”(hhÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÍhhÊh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hŒÏThis section presents the configuration process of a CXL Type-3 memory device, and how it is ultimately exposed to users as either a :code:`DAX` device or normal memory pages via the kernel's page allocator.”h]”(hŒ…This section presents the configuration process of a CXL Type-3 memory device, and how it is ultimately exposed to users as either a ”…”�”}”(hhßh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ :code:`DAX`”h]”hŒDAX”…”�”}”(hhéh²hh³Nh´Nubah}”(h]”h ]”Œcode”ah"]”h$]”h&]”Œlanguage”huh1hçhhßubhŒA device or normal memory pages via the kernel’s page allocator.”…”�”}”(hhßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhhÊh²hubhÞ)�”}”(hŒWPortions marked with a bullet are points at which certain kernel objects are generated.”h]”hŒWPortions marked with a bullet are points at which certain kernel objects are generated.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K hhÊh²hubhŒenumerated_list”“”)�”}”(hhh]”hŒ list_item”“”)�”}”(hŒ Early Boot ”h]”hÞ)�”}”(hŒ Early Boot”h]”hŒ Early Boot”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ)”uh1jhhÊh²hh³hÇh´KubhŒ block_quote”“”)�”}”(hX‡a) BIOS, Build, and Boot Parameters i) EFI_MEMORY_SP ii) CONFIG_EFI_SOFT_RESERVE iii) CONFIG_MHP_DEFAULT_ONLINE_TYPE iv) nosoftreserve b) Memory Map Creation i) EFI Memory Map / E820 Consulted for Soft-Reserved * CXL Memory is set aside to be handled by the CXL driver * Soft-Reserved IO Resource created for CFMWS entry c) NUMA Node Creation * Nodes created from ACPI CEDT CFMWS and SRAT Proximity domains (PXM) d) Memory Tier Creation * A default memory_tier is created with all nodes. e) Contiguous Memory Allocation * Any requested CMA is allocated from Online nodes f) Init Finishes, Drivers start probing ”h]”(j)�”}”(hhh]”j)�”}”(hŒ!BIOS, Build, and Boot Parameters ”h]”hÞ)�”}”(hŒ BIOS, Build, and Boot Parameters”h]”hŒ BIOS, Build, and Boot Parameters”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”j6Œ loweralpha”j8hj9j:uh1jhj=ubj<)�”}”(hŒci) EFI_MEMORY_SP ii) CONFIG_EFI_SOFT_RESERVE iii) CONFIG_MHP_DEFAULT_ONLINE_TYPE iv) nosoftreserve ”h]”j)�”}”(hhh]”(j)�”}”(hŒ EFI_MEMORY_SP”h]”hÞ)�”}”(hjlh]”hŒ EFI_MEMORY_SP”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubj)�”}”(hŒCONFIG_EFI_SOFT_RESERVE”h]”hÞ)�”}”(hjƒh]”hŒCONFIG_EFI_SOFT_RESERVE”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubj)�”}”(hŒCONFIG_MHP_DEFAULT_ONLINE_TYPE”h]”hÞ)�”}”(hjšh]”hŒCONFIG_MHP_DEFAULT_ONLINE_TYPE”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubj)�”}”(hŒnosoftreserve ”h]”hÞ)�”}”(hŒ nosoftreserve”h]”hŒ nosoftreserve”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubeh}”(h]”h ]”h"]”h$]”h&]”j6Œ lowerroman”j8hj9j:uh1jhjcubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´Khj=ubj)�”}”(hhh]”j)�”}”(hŒMemory Map Creation ”h]”hÞ)�”}”(hŒMemory Map Creation”h]”hŒMemory Map Creation”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:Œstart”Kuh1jhj=ubj<)�”}”(hŒ©i) EFI Memory Map / E820 Consulted for Soft-Reserved * CXL Memory is set aside to be handled by the CXL driver * Soft-Reserved IO Resource created for CFMWS entry ”h]”(j)�”}”(hhh]”j)�”}”(hŒ2EFI Memory Map / E820 Consulted for Soft-Reserved ”h]”hÞ)�”}”(hŒ1EFI Memory Map / E820 Consulted for Soft-Reserved”h]”hŒ1EFI Memory Map / E820 Consulted for Soft-Reserved”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúubah}”(h]”h ]”h"]”h$]”h&]”j6jÍj8hj9j:uh1jhjöubj<)�”}”(hŒo* CXL Memory is set aside to be handled by the CXL driver * Soft-Reserved IO Resource created for CFMWS entry ”h]”hŒ bullet_list”“”)�”}”(hhh]”(j)�”}”(hŒ8CXL Memory is set aside to be handled by the CXL driver ”h]”hÞ)�”}”(hŒ7CXL Memory is set aside to be handled by the CXL driver”h]”hŒ7CXL Memory is set aside to be handled by the CXL driver”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubj)�”}”(hŒ2Soft-Reserved IO Resource created for CFMWS entry ”h]”hÞ)�”}”(hŒ1Soft-Reserved IO Resource created for CFMWS entry”h]”hŒ1Soft-Reserved IO Resource created for CFMWS entry”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj!ubeh}”(h]”h ]”h"]”h$]”h&]”Œbullet”Œ*”uh1jh³hÇh´Khjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´Khjöubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´Khj=ubj)�”}”(hhh]”j)�”}”(hŒNUMA Node Creation ”h]”hÞ)�”}”(hŒNUMA Node Creation”h]”hŒNUMA Node Creation”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhj=ubj<)�”}”(hŒF* Nodes created from ACPI CEDT CFMWS and SRAT Proximity domains (PXM) ”h]”j )�”}”(hhh]”j)�”}”(hŒDNodes created from ACPI CEDT CFMWS and SRAT Proximity domains (PXM) ”h]”hÞ)�”}”(hŒCNodes created from ACPI CEDT CFMWS and SRAT Proximity domains (PXM)”h]”hŒCNodes created from ACPI CEDT CFMWS and SRAT Proximity domains (PXM)”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K!hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K!hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K!hj=ubj)�”}”(hhh]”j)�”}”(hŒMemory Tier Creation ”h]”hÞ)�”}”(hŒMemory Tier Creation”h]”hŒMemory Tier Creation”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K#hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhj=ubj<)�”}”(hŒ3* A default memory_tier is created with all nodes. ”h]”j )�”}”(hhh]”j)�”}”(hŒ1A default memory_tier is created with all nodes. ”h]”hÞ)�”}”(hŒ0A default memory_tier is created with all nodes.”h]”hŒ0A default memory_tier is created with all nodes.”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K%hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K%hjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K%hj=ubj)�”}”(hhh]”j)�”}”(hŒContiguous Memory Allocation ”h]”hÞ)�”}”(hŒContiguous Memory Allocation”h]”hŒContiguous Memory Allocation”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K'hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhj=ubj<)�”}”(hŒ3* Any requested CMA is allocated from Online nodes ”h]”j )�”}”(hhh]”j)�”}”(hŒ1Any requested CMA is allocated from Online nodes ”h]”hÞ)�”}”(hŒ0Any requested CMA is allocated from Online nodes”h]”hŒ0Any requested CMA is allocated from Online nodes”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K)hj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%ubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K)hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K)hj=ubj)�”}”(hhh]”j)�”}”(hŒ%Init Finishes, Drivers start probing ”h]”hÞ)�”}”(hŒ$Init Finishes, Drivers start probing”h]”hŒ$Init Finishes, Drivers start probing”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K+hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjLubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhj=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KhhÊh²hubj)�”}”(hhh]”j)�”}”(hŒACPI and PCI Drivers ”h]”hÞ)�”}”(hŒACPI and PCI Drivers”h]”hŒACPI and PCI Drivers”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K-hjvubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsh²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j6j7j8hj9j:jõKuh1jhhÊh²hh³hÇh´K-ubj<)�”}”(hŒAa) Detects PCI device is CXL, marking it for probe by CXL driver ”h]”j)�”}”(hhh]”j)�”}”(hŒ>Detects PCI device is CXL, marking it for probe by CXL driver ”h]”hÞ)�”}”(hŒ=Detects PCI device is CXL, marking it for probe by CXL driver”h]”hŒ=Detects PCI device is CXL, marking it for probe by CXL driver”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K/hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:uh1jhj”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K/hhÊh²hubj)�”}”(hhh]”j)�”}”(hŒCXL Driver Operation ”h]”hÞ)�”}”(hŒCXL Driver Operation”h]”hŒCXL Driver Operation”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K1hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j6j7j8hj9j:jõKuh1jhhÊh²hh³hÇh´K1ubj<)�”}”(hXna) Base device creation * root, port, and memdev devices created * CEDT CFMWS IO Resource creation b) Decoder creation * root, switch, and endpoint decoders created c) Logical device creation * memory_region and endpoint devices created d) Devices are associated with each other * If auto-decoder (BIOS-programmed decoders), driver validates configurations, builds associations, and locks configs at probe time. * If user-configured, validation and associations are built at decoder-commit time. e) Regions surfaced as DAX region * dax_region created * DAX device created via DAX driver ”h]”(j)�”}”(hhh]”j)�”}”(hŒBase device creation ”h]”hÞ)�”}”(hŒBase device creation”h]”hŒBase device creation”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K3hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:uh1jhjàubj<)�”}”(hŒK* root, port, and memdev devices created * CEDT CFMWS IO Resource creation ”h]”j )�”}”(hhh]”(j)�”}”(hŒ&root, port, and memdev devices created”h]”hÞ)�”}”(hjh]”hŒ&root, port, and memdev devices created”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K5hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubj)�”}”(hŒ CEDT CFMWS IO Resource creation ”h]”hÞ)�”}”(hŒCEDT CFMWS IO Resource creation”h]”hŒCEDT CFMWS IO Resource creation”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K6hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubeh}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K5hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K5hjàubj)�”}”(hhh]”j)�”}”(hŒDecoder creation ”h]”hÞ)�”}”(hŒDecoder creation”h]”hŒDecoder creation”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K8hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjGubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhjàubj<)�”}”(hŒ.* root, switch, and endpoint decoders created ”h]”j )�”}”(hhh]”j)�”}”(hŒ,root, switch, and endpoint decoders created ”h]”hÞ)�”}”(hŒ+root, switch, and endpoint decoders created”h]”hŒ+root, switch, and endpoint decoders created”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K:hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K:hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K:hjàubj)�”}”(hhh]”j)�”}”(hŒLogical device creation ”h]”hÞ)�”}”(hŒLogical device creation”h]”hŒLogical device creation”…”�”}”(hjšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Khj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´K>hj´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K>hjàubj)�”}”(hhh]”j)�”}”(hŒ'Devices are associated with each other ”h]”hÞ)�”}”(hŒ&Devices are associated with each other”h]”hŒ&Devices are associated with each other”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K@hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhjàubj<)�”}”(hŒÞ* If auto-decoder (BIOS-programmed decoders), driver validates configurations, builds associations, and locks configs at probe time. * If user-configured, validation and associations are built at decoder-commit time. ”h]”j )�”}”(hhh]”(j)�”}”(hŒƒIf auto-decoder (BIOS-programmed decoders), driver validates configurations, builds associations, and locks configs at probe time. ”h]”hÞ)�”}”(hŒ‚If auto-decoder (BIOS-programmed decoders), driver validates configurations, builds associations, and locks configs at probe time.”h]”hŒ‚If auto-decoder (BIOS-programmed decoders), driver validates configurations, builds associations, and locks configs at probe time.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubj)�”}”(hŒRIf user-configured, validation and associations are built at decoder-commit time. ”h]”hÞ)�”}”(hŒQIf user-configured, validation and associations are built at decoder-commit time.”h]”hŒQIf user-configured, validation and associations are built at decoder-commit time.”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KEhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KBhjubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KBhjàubj)�”}”(hhh]”j)�”}”(hŒRegions surfaced as DAX region ”h]”hÞ)�”}”(hŒRegions surfaced as DAX region”h]”hŒRegions surfaced as DAX region”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KHhjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhjàubj<)�”}”(hŒ:* dax_region created * DAX device created via DAX driver ”h]”j )�”}”(hhh]”(j)�”}”(hŒdax_region created ”h]”hÞ)�”}”(hŒdax_region created”h]”hŒdax_region created”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KJhjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubj)�”}”(hŒ"DAX device created via DAX driver ”h]”hÞ)�”}”(hŒ!DAX device created via DAX driver”h]”hŒ!DAX device created via DAX driver”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KLhjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubeh}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KJhjdubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KJhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K3hhÊh²hubj)�”}”(hhh]”j)�”}”(hŒDAX Driver Operation ”h]”hÞ)�”}”(hŒDAX Driver Operation”h]”hŒDAX Driver Operation”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KNhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­h²hh³hÇh´Nubah}”(h]”h ]”h"]”h$]”h&]”j6j7j8hj9j:jõKuh1jhhÊh²hh³hÇh´KNubj<)�”}”(hXva) DAX driver surfaces DAX region as one of two dax device modes * kmem - dax device is converted to hotplug memory blocks * DAX kmem IO Resource creation * hmem - dax device is left as daxdev to be accessed as a file. * If hmem, journey ends here. b) DAX kmem surfaces memory region to Memory Hotplug to add to page allocator as "driver managed memory" ”h]”(j)�”}”(hhh]”j)�”}”(hŒ>DAX driver surfaces DAX region as one of two dax device modes ”h]”hÞ)�”}”(hŒ=DAX driver surfaces DAX region as one of two dax device modes”h]”hŒ=DAX driver surfaces DAX region as one of two dax device modes”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KPhjÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÒubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:uh1jhjÎubj<)�”}”(hŒ¿* kmem - dax device is converted to hotplug memory blocks * DAX kmem IO Resource creation * hmem - dax device is left as daxdev to be accessed as a file. * If hmem, journey ends here. ”h]”j )�”}”(hhh]”(j)�”}”(hŒYkmem - dax device is converted to hotplug memory blocks * DAX kmem IO Resource creation ”h]”(hÞ)�”}”(hŒ7kmem - dax device is converted to hotplug memory blocks”h]”hŒ7kmem - dax device is converted to hotplug memory blocks”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KRhjúubj )�”}”(hhh]”j)�”}”(hŒDAX kmem IO Resource creation ”h]”hÞ)�”}”(hŒDAX kmem IO Resource creation”h]”hŒDAX kmem IO Resource creation”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KThjubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KThjúubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubj)�”}”(hŒ]hmem - dax device is left as daxdev to be accessed as a file. * If hmem, journey ends here. ”h]”(hÞ)�”}”(hŒ=hmem - dax device is left as daxdev to be accessed as a file.”h]”hŒ=hmem - dax device is left as daxdev to be accessed as a file.”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KVhj3ubj )�”}”(hhh]”j)�”}”(hŒIf hmem, journey ends here. ”h]”hÞ)�”}”(hŒIf hmem, journey ends here.”h]”hŒIf hmem, journey ends here.”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KXhjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KXhj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KRhjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KRhjÎubj)�”}”(hhh]”j)�”}”(hŒfDAX kmem surfaces memory region to Memory Hotplug to add to page allocator as "driver managed memory" ”h]”hÞ)�”}”(hŒeDAX kmem surfaces memory region to Memory Hotplug to add to page allocator as "driver managed memory"”h]”hŒiDAX kmem surfaces memory region to Memory Hotplug to add to page allocator as “driver managed memoryâ€�”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KZhj{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjxubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KPhhÊh²hubj)�”}”(hhh]”j)�”}”(hŒMemory Hotplug ”h]”hÞ)�”}”(hŒMemory Hotplug”h]”hŒMemory Hotplug”…”�”}”(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´Nubah}”(h]”h ]”h"]”h$]”h&]”j6j7j8hj9j:jõKuh1jhhÊh²hh³hÇh´K]ubj<)�”}”(hX_a) mhp component surfaces a dax device memory region as multiple memory blocks to the page allocator * blocks appear in :code:`/sys/bus/memory/devices` and linked to a NUMA node b) blocks are onlined into the requested zone (NORMAL or MOVABLE) * Memory is marked "Driver Managed" to avoid kexec from using it as region for kernel updates”h]”(j)�”}”(hhh]”j)�”}”(hŒbmhp component surfaces a dax device memory region as multiple memory blocks to the page allocator ”h]”hÞ)�”}”(hŒamhp component surfaces a dax device memory region as multiple memory blocks to the page allocator”h]”hŒamhp component surfaces a dax device memory region as multiple memory blocks to the page allocator”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´K_hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:uh1jhjÀubj<)�”}”(hŒM* blocks appear in :code:`/sys/bus/memory/devices` and linked to a NUMA node ”h]”j )�”}”(hhh]”j)�”}”(hŒKblocks appear in :code:`/sys/bus/memory/devices` and linked to a NUMA node ”h]”hÞ)�”}”(hŒJblocks appear in :code:`/sys/bus/memory/devices` and linked to a NUMA node”h]”(hŒblocks appear in ”…”�”}”(hjðh²hh³Nh´Nubhè)�”}”(hŒ:code:`/sys/bus/memory/devices`”h]”hŒ/sys/bus/memory/devices”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”hôah"]”h$]”h&]”Œlanguage”huh1hçhjðubhŒ and linked to a NUMA node”…”�”}”(hjðh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kbhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjéubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´Kbhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KbhjÀubj)�”}”(hhh]”j)�”}”(hŒ?blocks are onlined into the requested zone (NORMAL or MOVABLE) ”h]”hÞ)�”}”(hŒ>blocks are onlined into the requested zone (NORMAL or MOVABLE)”h]”hŒ>blocks are onlined into the requested zone (NORMAL or MOVABLE)”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´Kdhj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#ubah}”(h]”h ]”h"]”h$]”h&]”j6jbj8hj9j:jõKuh1jhjÀubj<)�”}”(hŒ_* Memory is marked "Driver Managed" to avoid kexec from using it as region for kernel updates”h]”j )�”}”(hhh]”j)�”}”(hŒ[Memory is marked "Driver Managed" to avoid kexec from using it as region for kernel updates”h]”hÞ)�”}”(hŒ[Memory is marked "Driver Managed" to avoid kexec from using it as region for kernel updates”h]”hŒ_Memory is marked “Driver Managedâ€� to avoid kexec from using it as region for kernel updates”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝh³hÇh´KfhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjHubah}”(h]”h ]”h"]”h$]”h&]”jZj[uh1jh³hÇh´KfhjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´KfhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j;h³hÇh´K_hhÊh²hubeh}”(h]”Œoverview”ah ]”h"]”Œoverview”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”}”jzjwsŒ nametypes”}”jz‰sh}”jwhÊsŒ 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”]”(hŒsystem_message”“”)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "b" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “bâ€� (ordinal 2)”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”ŒINFO”Œsource”hÇŒline”Kuh1jhj=ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "c" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “câ€� (ordinal 3)”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhj=ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "d" (ordinal 4)”h]”hŒ>Enumerated list start value not ordinal-1: “dâ€� (ordinal 4)”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj;ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhj=ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "e" (ordinal 5)”h]”hŒ>Enumerated list start value not ordinal-1: “eâ€� (ordinal 5)”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjVubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhj=ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "f" (ordinal 6)”h]”hŒ>Enumerated list start value not ordinal-1: “fâ€� (ordinal 6)”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjqubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhj=ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "2" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “2â€� (ordinal 2)”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjŒubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhhÊh²hh³hÇh´K-ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "3" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “3â€� (ordinal 3)”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj§ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhhÊh²hh³hÇh´K1ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "b" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “bâ€� (ordinal 2)”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÂubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjàubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "c" (ordinal 3)”h]”hŒ>Enumerated list start value not ordinal-1: “câ€� (ordinal 3)”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjÝubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjàubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "d" (ordinal 4)”h]”hŒ>Enumerated list start value not ordinal-1: “dâ€� (ordinal 4)”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjøubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjàubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "e" (ordinal 5)”h]”hŒ>Enumerated list start value not ordinal-1: “eâ€� (ordinal 5)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjàubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "4" (ordinal 4)”h]”hŒ>Enumerated list start value not ordinal-1: “4â€� (ordinal 4)”…”�”}”(hj1 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj. ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhhÊh²hh³hÇh´KNubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "b" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “bâ€� (ordinal 2)”…”�”}”(hjL h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjI ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjÎubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "5" (ordinal 5)”h]”hŒ>Enumerated list start value not ordinal-1: “5â€� (ordinal 5)”…”�”}”(hjg h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhjd ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhhÊh²hh³hÇh´K]ubj)�”}”(hhh]”hÞ)�”}”(hŒ:Enumerated list start value not ordinal-1: "b" (ordinal 2)”h]”hŒ>Enumerated list start value not ordinal-1: “bâ€� (ordinal 2)”…”�”}”(hj‚ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÝhj ubah}”(h]”h ]”h"]”h$]”h&]”Œlevel”KŒtype”jŒsource”hÇŒline”Kuh1jhjÀubeŒtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.