€•ÛSŒ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/driver-api/cxl/platform/device-hotplug”Œ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/driver-api/cxl/platform/device-hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒItalian”…””}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/it_IT/driver-api/cxl/platform/device-hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒJapanese”…””}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/ja_JP/driver-api/cxl/platform/device-hotplug”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)”}”(hhh]”hŒKorean”…””}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ:/translations/ko_KR/driver-api/cxl/platform/device-hotplug”Œ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/driver-api/cxl/platform/device-hotplug”Œ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ŸŒT/var/lib/git/docbuild/linux/Documentation/driver-api/cxl/platform/device-hotplug.rst”h KubhŒsection”“”)”}”(hhh]”(hŒtitle”“”)”}”(hŒCXL Device Hotplug”h]”hŒCXL Device Hotplug”…””}”(hh»hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hh¶hžhhŸh³h KubhŒ paragraph”“”)”}”(hŒtDevice hotplug refers to *physical* hotplug of a device (addition or removal of a physical device from the machine).”h]”(hŒDevice hotplug refers to ”…””}”(hhËhžhhŸNh NubhŒemphasis”“”)”}”(hŒ *physical*”h]”hŒphysical”…””}”(hhÕhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÓhhËubhŒQ hotplug of a device (addition or removal of a physical device from the machine).”…””}”(hhËhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhÊ)”}”(hŒÓBIOS/EFI software is expected to configure sufficient resources **at boot time** to allow hotplugged devices to be configured by software (such as proximity domains, HPA regions, and host-bridge configurations).”h]”(hŒ@BIOS/EFI software is expected to configure sufficient resources ”…””}”(hhíhžhhŸNh NubhŒstrong”“”)”}”(hŒ**at boot time**”h]”hŒ at boot time”…””}”(hh÷hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhhíubhŒƒ to allow hotplugged devices to be configured by software (such as proximity domains, HPA regions, and host-bridge configurations).”…””}”(hhíhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K hh¶hžhubhÊ)”}”(hŒBIOS/EFI is not expected (**nor suggested**) to configure hotplugged devices at hotplug time (i.e. HDM decoders should be left unprogrammed).”h]”(hŒBIOS/EFI is not expected (”…””}”(hjhžhhŸNh Nubhö)”}”(hŒ**nor suggested**”h]”hŒ nor suggested”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjubhŒb) to configure hotplugged devices at hotplug time (i.e. HDM decoders should be left unprogrammed).”…””}”(hjhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhÊ)”}”(hŒ_This document covers some examples of those resources, but should not be considered exhaustive.”h]”hŒ_This document covers some examples of those resources, but should not be considered exhaustive.”…””}”(hj/hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khh¶hžhubhµ)”}”(hhh]”(hº)”}”(hŒ Hot-Remove”h]”hŒ Hot-Remove”…””}”(hj@hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj=hžhhŸh³h KubhÊ)”}”(hŒ’Hot removal of a device typically requires careful removal of software constructs (memory regions, associated drivers) which manage these devices.”h]”hŒ’Hot removal of a device typically requires careful removal of software constructs (memory regions, associated drivers) which manage these devices.”…””}”(hjNhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj=hžhubhÊ)”}”(hŒºHard-removing a CXL.mem device without carefully tearing down driver stacks is likely to cause the system to machine-check (or at least SIGBUS if memory access is limited to user space).”h]”hŒºHard-removing a CXL.mem device without carefully tearing down driver stacks is likely to cause the system to machine-check (or at least SIGBUS if memory access is limited to user space).”…””}”(hj\hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj=hžhubeh}”(h]”Œ hot-remove”ah ]”h"]”Œ hot-remove”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒMemory Device Hot-Add”h]”hŒMemory Device Hot-Add”…””}”(hjuhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjrhžhhŸh³h KubhÊ)”}”(hŒ×A device present at boot may be associated with a CXL Fixed Memory Window reported in :doc:`CEDT`. That CFMWS may match the size of the device, but the construction of the CEDT CFMWS is platform-defined.”h]”(hŒVA device present at boot may be associated with a CXL Fixed Memory Window reported in ”…””}”(hjƒhžhhŸNh Nubh)”}”(hŒ:doc:`CEDT`”h]”hŒinline”“”)”}”(hjh]”hŒCEDT”…””}”(hj‘hžhhŸNh Nubah}”(h]”h ]”(Œxref”Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhj‹ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œ&driver-api/cxl/platform/device-hotplug”Œ refdomain”jœŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆŒ reftarget”Œ acpi/cedt”uh1hhŸh³h KhjƒubhŒk. That CFMWS may match the size of the device, but the construction of the CEDT CFMWS is platform-defined.”…””}”(hjƒhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KhjrhžhubhÊ)”}”(hŒ|Hot-adding a memory device requires this pre-defined, **static** CFMWS to have sufficient HPA space to describe that device.”h]”(hŒ6Hot-adding a memory device requires this pre-defined, ”…””}”(hjºhžhhŸNh Nubhö)”}”(hŒ **static**”h]”hŒstatic”…””}”(hjÂhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjºubhŒ< CFMWS to have sufficient HPA space to describe that device.”…””}”(hjºhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K#hjrhžhubhÊ)”}”(hŒ-There are a few common scenarios to consider.”h]”hŒ-There are a few common scenarios to consider.”…””}”(hjÚhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K&hjrhžhubhµ)”}”(hhh]”(hº)”}”(hŒ-Single-Endpoint Memory Device Present at Boot”h]”hŒ-Single-Endpoint Memory Device Present at Boot”…””}”(hjëhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjèhžhhŸh³h K)ubhÊ)”}”(hŒÜA device present at boot likely had its capacity reported in the :doc:`CEDT`. If a device is removed and a new device hotplugged, the capacity of the new device will be limited to the original CFMWS capacity.”h]”(hŒAA device present at boot likely had its capacity reported in the ”…””}”(hjùhžhhŸNh Nubh)”}”(hŒ:doc:`CEDT`”h]”j)”}”(hjh]”hŒCEDT”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”(j›Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¨Œ refdomain”jŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj®Œ acpi/cedt”uh1hhŸh³h K*hjùubhŒ…. If a device is removed and a new device hotplugged, the capacity of the new device will be limited to the original CFMWS capacity.”…””}”(hjùhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K*hjèhžhubhÊ)”}”(hŒŒAdding capacity larger than the original device will cause memory region creation to fail if the region size is greater than the CFMWS size.”h]”hŒŒAdding capacity larger than the original device will cause memory region creation to fail if the region size is greater than the CFMWS size.”…””}”(hj+hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K.hjèhžhubhÊ)”}”(hŒÐThe CFMWS is **static** and cannot be adjusted. Platforms which may expect different sized devices to be hotplugged must allocate sufficient CFMWS space **at boot time** to cover all future expected devices.”h]”(hŒ The CFMWS is ”…””}”(hj9hžhhŸNh Nubhö)”}”(hŒ **static**”h]”hŒstatic”…””}”(hjAhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj9ubhŒƒ and cannot be adjusted. Platforms which may expect different sized devices to be hotplugged must allocate sufficient CFMWS space ”…””}”(hj9hžhhŸNh Nubhö)”}”(hŒ**at boot time**”h]”hŒ at boot time”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj9ubhŒ& to cover all future expected devices.”…””}”(hj9hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K1hjèhžhubeh}”(h]”Œ-single-endpoint-memory-device-present-at-boot”ah ]”h"]”Œ-single-endpoint memory device present at boot”ah$]”h&]”uh1h´hjrhžhhŸh³h K)ubhµ)”}”(hhh]”(hº)”}”(hŒ,Multi-Endpoint Memory Device Present at Boot”h]”hŒ,Multi-Endpoint Memory Device Present at Boot”…””}”(hjvhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjshžhhŸh³h K6ubhÊ)”}”(hŒáNon-switch-based Multi-Endpoint devices are outside the scope of what the CXL specification describes, but they are technically possible. We describe them here for instructive reasons only - this does not imply Linux support.”h]”hŒáNon-switch-based Multi-Endpoint devices are outside the scope of what the CXL specification describes, but they are technically possible. We describe them here for instructive reasons only - this does not imply Linux support.”…””}”(hj„hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K7hjshžhubhÊ)”}”(hŒÁA hot-plug capable CXL memory device, such as one which presents multiple expanders as a single large-capacity device, should report the **maximum possible capacity** for the device at boot. ::”h]”(hŒ‰A hot-plug capable CXL memory device, such as one which presents multiple expanders as a single large-capacity device, should report the ”…””}”(hj’hžhhŸNh Nubhö)”}”(hŒ**maximum possible capacity**”h]”hŒmaximum possible capacity”…””}”(hjšhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj’ubhŒ for the device at boot.”…””}”(hj’hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K;hjshžhubhŒ literal_block”“”)”}”(hŒ“ HB0 RP0 | [Multi-Endpoint Memory Device] _____|_____ | | [Endpoint0] [Empty]”h]”hŒ“ HB0 RP0 | [Multi-Endpoint Memory Device] _____|_____ | | [Endpoint0] [Empty]”…””}”hj´sbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j²hŸh³h K?hjshžhubhÊ)”}”(hŒ{Limiting the size to the capacity preset at boot will limit hot-add support to replacing capacity that was present at boot.”h]”hŒ{Limiting the size to the capacity preset at boot will limit hot-add support to replacing capacity that was present at boot.”…””}”(hjÂhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KHhjshžhubeh}”(h]”Œ,multi-endpoint-memory-device-present-at-boot”ah ]”h"]”Œ,multi-endpoint memory device present at boot”ah$]”h&]”uh1h´hjrhžhhŸh³h K6ubhµ)”}”(hhh]”(hº)”}”(hŒNo CXL Device Present at Boot”h]”hŒNo CXL Device Present at Boot”…””}”(hjÛhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjØhžhhŸh³h KLubhÊ)”}”(hŒ–When no CXL memory device is present on boot, some platforms omit the CFMWS in the :doc:`CEDT`. When this occurs, hot-add is not possible.”h]”(hŒSWhen no CXL memory device is present on boot, some platforms omit the CFMWS in the ”…””}”(hjéhžhhŸNh Nubh)”}”(hŒ:doc:`CEDT`”h]”j)”}”(hjóh]”hŒCEDT”…””}”(hjõhžhhŸNh Nubah}”(h]”h ]”(j›Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhjñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¨Œ refdomain”jÿŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj®Œ acpi/cedt”uh1hhŸh³h KMhjéubhŒ-. When this occurs, hot-add is not possible.”…””}”(hjéhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KMhjØhžhubhÊ)”}”(hŒÈThis describes the base case for any given device not being present at boot. If a future possible device is not described in the CEDT at boot, hot-add of that device is either limited or not possible.”h]”hŒÈThis describes the base case for any given device not being present at boot. If a future possible device is not described in the CEDT at boot, hot-add of that device is either limited or not possible.”…””}”(hjhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KPhjØhžhubhÊ)”}”(hŒÙFor a platform to support hot-add of a full memory device, it must allocate a CEDT CFMWS region with sufficient memory capacity to cover all future potentially added capacity (along with any relevant CEDT CHBS entry).”h]”hŒÙFor a platform to support hot-add of a full memory device, it must allocate a CEDT CFMWS region with sufficient memory capacity to cover all future potentially added capacity (along with any relevant CEDT CHBS entry).”…””}”(hj)hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KThjØhžhubhÊ)”}”(hŒýTo support memory hotplug directly on the host bridge/root port, or on a switch downstream of the host bridge, a platform must construct a CEDT CFMWS at boot with sufficient resources to support the max possible (or expected) hotplug memory capacity. ::”h]”hŒúTo support memory hotplug directly on the host bridge/root port, or on a switch downstream of the host bridge, a platform must construct a CEDT CFMWS at boot with sufficient resources to support the max possible (or expected) hotplug memory capacity.”…””}”(hj7hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KXhjØhžhubj³)”}”(hX HB0 HB1 RP0 RP1 RP2 | | | Empty Empty USP ________|________ | | | | DSP DSP DSP DSP | | | | All Empty”h]”hX HB0 HB1 RP0 RP1 RP2 | | | Empty Empty USP ________|________ | | | | DSP DSP DSP DSP | | | | All Empty”…””}”hjEsbah}”(h]”h ]”h"]”h$]”h&]”h±h²uh1j²hŸh³h K]hjØhžhubhÊ)”}”(hXFor example, a BIOS/EFI may expose an option to configure a CEDT CFMWS with a pre-configured amount of memory capacity (per host bridge, or host bridge interleave set), even if no device is attached to Root Ports or Downstream Ports at boot (as depicted in the figure above).”h]”hXFor example, a BIOS/EFI may expose an option to configure a CEDT CFMWS with a pre-configured amount of memory capacity (per host bridge, or host bridge interleave set), even if no device is attached to Root Ports or Downstream Ports at boot (as depicted in the figure above).”…””}”(hjShžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h KghjØhžhubeh}”(h]”Œno-cxl-device-present-at-boot”ah ]”h"]”Œno cxl device present at boot”ah$]”h&]”uh1h´hjrhžhhŸh³h KLubeh}”(h]”Œmemory-device-hot-add”ah ]”h"]”Œmemory device hot-add”ah$]”h&]”uh1h´hh¶hžhhŸh³h Kubhµ)”}”(hhh]”(hº)”}”(hŒInterleave Sets”h]”hŒInterleave Sets”…””}”(hjthžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hjqhžhhŸh³h Knubhµ)”}”(hhh]”(hº)”}”(hŒHost Bridge Interleave”h]”hŒHost Bridge Interleave”…””}”(hj…hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj‚hžhhŸh³h KqubhÊ)”}”(hX*Host-bridge interleaved memory regions are defined **statically** in the :doc:`CEDT`. To apply cross-host-bridge interleave, a CFMWS entry describing that interleave must have been provided **at boot**. Hotplugged devices cannot add host-bridge interleave capabilities at hotplug time.”h]”(hŒ3Host-bridge interleaved memory regions are defined ”…””}”(hj“hžhhŸNh Nubhö)”}”(hŒ**statically**”h]”hŒ statically”…””}”(hj›hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj“ubhŒ in the ”…””}”(hj“hžhhŸNh Nubh)”}”(hŒ:doc:`CEDT`”h]”j)”}”(hj¯h]”hŒCEDT”…””}”(hj±hžhhŸNh Nubah}”(h]”h ]”(j›Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhj­ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¨Œ refdomain”j»Œreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj®Œ acpi/cedt”uh1hhŸh³h Krhj“ubhŒk. To apply cross-host-bridge interleave, a CFMWS entry describing that interleave must have been provided ”…””}”(hj“hžhhŸNh Nubhö)”}”(hŒ **at boot**”h]”hŒat boot”…””}”(hjÑhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj“ubhŒU. Hotplugged devices cannot add host-bridge interleave capabilities at hotplug time.”…””}”(hj“hžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Krhj‚hžhubhÊ)”}”(hXSee the :doc:`Flexible CEDT Configuration` example to see how a platform can provide this kind of flexibility regarding hotplugged memory devices. BIOS/EFI software should consider options to present flexible CEDT configurations with hotplug support.”h]”(hŒSee the ”…””}”(hjéhžhhŸNh Nubh)”}”(hŒC:doc:`Flexible CEDT Configuration`”h]”j)”}”(hjóh]”hŒFlexible CEDT Configuration”…””}”(hjõhžhhŸNh Nubah}”(h]”h ]”(j›Œstd”Œstd-doc”eh"]”h$]”h&]”uh1jhjñubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”j¨Œ refdomain”jÿŒreftype”Œdoc”Œ refexplicit”ˆŒrefwarn”ˆj®Œexample-configurations/flexible”uh1hhŸh³h KwhjéubhŒÑ example to see how a platform can provide this kind of flexibility regarding hotplugged memory devices. BIOS/EFI software should consider options to present flexible CEDT configurations with hotplug support.”…””}”(hjéhžhhŸNh Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Kwhj‚hžhubeh}”(h]”Œhost-bridge-interleave”ah ]”h"]”Œhost bridge interleave”ah$]”h&]”uh1h´hjqhžhhŸh³h Kqubhµ)”}”(hhh]”(hº)”}”(hŒHDM Interleave”h]”hŒHDM Interleave”…””}”(hj&hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1h¹hj#hžhhŸh³h K}ubhÊ)”}”(hŒrDecoder-applied interleave can flexibly handle hotplugged devices, as decoders can be re-programmed after hotplug.”h]”hŒrDecoder-applied interleave can flexibly handle hotplugged devices, as decoders can be re-programmed after hotplug.”…””}”(hj4hžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h K~hj#hžhubhÊ)”}”(hŒzTo add or remove a device to/from an existing HDM-applied interleaved region, that region must be torn down an re-created.”h]”hŒzTo add or remove a device to/from an existing HDM-applied interleaved region, that region must be torn down an re-created.”…””}”(hjBhžhhŸNh Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÉhŸh³h Khj#hžhubeh}”(h]”Œhdm-interleave”ah ]”h"]”Œhdm interleave”ah$]”h&]”uh1h´hjqhžhhŸh³h K}ubeh}”(h]”Œinterleave-sets”ah ]”h"]”Œinterleave sets”ah$]”h&]”uh1h´hh¶hžhhŸh³h Knubeh}”(h]”Œcxl-device-hotplug”ah ]”h"]”Œcxl device hotplug”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”}”(jejbjojljnjkjpjmjÕjÒjfjcj]jZj jjUjRuŒ nametypes”}”(je‰jo‰jn‰jp‰jÕ‰jf‰j]‰j ‰jU‰uh}”(jbh¶jlj=jkjrjmjèjÒjsjcjØjZjqjj‚jRj#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.