[Ysphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftargetM/translations/zh_CN/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetM/translations/zh_TW/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetM/translations/it_IT/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetM/translations/ja_JP/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetM/translations/ko_KR/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftargetM/translations/sp_SP/driver-api/cxl/linux/example-configurations/single-devicemodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhcomment)}(h SPDX-License-Identifier: GPL-2.0h]h SPDX-License-Identifier: GPL-2.0}hhsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1hhhhhhg/var/lib/git/docbuild/linux/Documentation/driver-api/cxl/linux/example-configurations/single-device.rsthKubhsection)}(hhh](htitle)}(h Single Deviceh]h Single Device}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hGThis cxl-cli configuration dump shows the following host configuration:h]hGThis cxl-cli configuration dump shows the following host configuration:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(h(A single socket system with one CXL rooth]h)}(hhh]h(A single socket system with one CXL root}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h&CXL Root has Four (4) CXL Host Bridgesh]h)}(hhh]h&CXL Root has Four (4) CXL Host Bridges}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h>One CXL Host Bridges has a single CXL Memory Expander Attachedh]h)}(hjh]h>One CXL Host Bridges has a single CXL Memory Expander Attached}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hNo interleave is present. h]h)}(hNo interleave is present.h]hNo interleave is present.}(hj)hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hj%ubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet*uh1hhhhKhhhhubh)}(hThis output is generated by :code:`cxl list -v` and describes the relationships between objects exposed in :code:`/sys/bus/cxl/devices/`.h](hThis output is generated by }(hjEhhhNhNubhliteral)}(h:code:`cxl list -v`h]h cxl list -v}(hjOhhhNhNubah}(h]h ]codeah"]h$]h&]languagehuh1jMhjEubh< and describes the relationships between objects exposed in }(hjEhhhNhNubjN)}(h:code:`/sys/bus/cxl/devices/`h]h/sys/bus/cxl/devices/}(hjchhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjEubh.}(hjEhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK hhhhubh literal_block)}(hXA[ { "bus":"root0", "provider":"ACPI.CXL", "nr_dports":4, "dports":[ { "dport":"pci0000:00", "alias":"ACPI0016:01", "id":0 }, { "dport":"pci0000:a8", "alias":"ACPI0016:02", "id":4 }, { "dport":"pci0000:2a", "alias":"ACPI0016:03", "id":1 }, { "dport":"pci0000:d2", "alias":"ACPI0016:00", "id":5 } ],h]hXA[ { "bus":"root0", "provider":"ACPI.CXL", "nr_dports":4, "dports":[ { "dport":"pci0000:00", "alias":"ACPI0016:01", "id":0 }, { "dport":"pci0000:a8", "alias":"ACPI0016:02", "id":4 }, { "dport":"pci0000:2a", "alias":"ACPI0016:03", "id":1 }, { "dport":"pci0000:d2", "alias":"ACPI0016:00", "id":5 } ],}hj~sbah}(h]h ]h"]h$]h&]hhuh1j|hhhKhhhhubh)}(hThis chunk shows the CXL "bus" (root0) has 4 downstream ports attached to CXL Host Bridges. The `Root` can be considered the singular upstream port attached to the platform's memory controller - which routes memory requests to it.h](heThis chunk shows the CXL “bus” (root0) has 4 downstream ports attached to CXL Host Bridges. The }(hjhhhNhNubhtitle_reference)}(h`Root`h]hRoot}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh can be considered the singular upstream port attached to the platform’s memory controller - which routes memory requests to it.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK.hhhhubh)}(hThe `ports:root0` section lays out how each of these downstream ports are configured. If a port is not configured (id's 0, 1, and 4), they are omitted.h](hThe }(hjhhhNhNubj)}(h `ports:root0`h]h ports:root0}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh section lays out how each of these downstream ports are configured. If a port is not configured (id’s 0, 1, and 4), they are omitted.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK2hhhhubj})}(hX"ports:root0":[ { "port":"port1", "host":"pci0000:d2", "depth":1, "nr_dports":3, "dports":[ { "dport":"0000:d2:01.1", "alias":"device:02", "id":0 }, { "dport":"0000:d2:01.3", "alias":"device:05", "id":2 }, { "dport":"0000:d2:07.1", "alias":"device:0d", "id":113 } ],h]hX"ports:root0":[ { "port":"port1", "host":"pci0000:d2", "depth":1, "nr_dports":3, "dports":[ { "dport":"0000:d2:01.1", "alias":"device:02", "id":0 }, { "dport":"0000:d2:01.3", "alias":"device:05", "id":2 }, { "dport":"0000:d2:07.1", "alias":"device:0d", "id":113 } ],}hjsbah}(h]h ]h"]h$]h&]hhuh1j|hhhK7hhhhubh)}(hThis chunk shows the available downstream ports associated with the CXL Host Bridge :code:`port1`. In this case, :code:`port1` has 3 available downstream ports: :code:`dport1`, :code:`dport2`, and :code:`dport113`..h](hTThis chunk shows the available downstream ports associated with the CXL Host Bridge }(hjhhhNhNubjN)}(h :code:`port1`h]hport1}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh. In this case, }(hjhhhNhNubjN)}(h :code:`port1`h]hport1}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh# has 3 available downstream ports: }(hjhhhNhNubjN)}(h:code:`dport1`h]hdport1}(hj hhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh, }(hjhhhNhNubjN)}(h:code:`dport2`h]hdport2}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh, and }(hjhhhNhNubjN)}(h:code:`dport113`h]hdport113}(hj0hhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh..}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKOhhhhubj})}(hX"endpoints:port1":[ { "endpoint":"endpoint5", "host":"mem0", "parent_dport":"0000:d2:01.1", "depth":2, "memdev":{ "memdev":"mem0", "ram_size":137438953472, "serial":0, "numa_node":0, "host":"0000:d3:00.0" }, "decoders:endpoint5":[ { "decoder":"decoder5.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "region":"region0", "dpa_resource":0, "dpa_size":137438953472, "mode":"ram" } ] } ],h]hX"endpoints:port1":[ { "endpoint":"endpoint5", "host":"mem0", "parent_dport":"0000:d2:01.1", "depth":2, "memdev":{ "memdev":"mem0", "ram_size":137438953472, "serial":0, "numa_node":0, "host":"0000:d3:00.0" }, "decoders:endpoint5":[ { "decoder":"decoder5.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "region":"region0", "dpa_resource":0, "dpa_size":137438953472, "mode":"ram" } ] } ],}hjIsbah}(h]h ]h"]h$]h&]hhuh1j|hhhKUhhhhubh)}(hIThis chunk shows the endpoints attached to the host bridge :code:`port1`.h](h;This chunk shows the endpoints attached to the host bridge }(hjWhhhNhNubjN)}(h :code:`port1`h]hport1}(hj_hhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjWubh.}(hjWhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKqhhhhubh)}(h:code:`endpoint5` contains a single configured decoder :code:`decoder5.0` which has the same interleave configuration as :code:`region0` (shown later).h](jN)}(h:code:`endpoint5`h]h endpoint5}(hj|hhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjxubh& contains a single configured decoder }(hjxhhhNhNubjN)}(h:code:`decoder5.0`h]h decoder5.0}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjxubh0 which has the same interleave configuration as }(hjxhhhNhNubjN)}(h:code:`region0`h]hregion0}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjxubh (shown later).}(hjxhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKshhhhubh)}(h7Next we have the decoders belonging to the host bridge:h]h7Next we have the decoders belonging to the host bridge:}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhhhhubj})}(hX "decoders:port1":[ { "decoder":"decoder1.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "region":"region0", "nr_targets":1, "targets":[ { "target":"0000:d2:01.1", "alias":"device:02", "position":0, "id":0 } ] } ] },h]hX "decoders:port1":[ { "decoder":"decoder1.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "region":"region0", "nr_targets":1, "targets":[ { "target":"0000:d2:01.1", "alias":"device:02", "position":0, "id":0 } ] } ] },}hjsbah}(h]h ]h"]h$]h&]hhuh1j|hhhKzhhhhubh)}(hHost Bridge :code:`port1` has a single decoder (:code:`decoder1.0`), whose only target is :code:`dport1` - which is attached to :code:`endpoint5`.h](h Host Bridge }(hjhhhNhNubjN)}(h :code:`port1`h]hport1}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh has a single decoder (}(hjhhhNhNubjN)}(h:code:`decoder1.0`h]h decoder1.0}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh), whose only target is }(hjhhhNhNubjN)}(h:code:`dport1`h]hdport1}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh - which is attached to }(hjhhhNhNubjN)}(h:code:`endpoint5`h]h endpoint5}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubh.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hKThe next chunk shows the three CXL host bridges without attached endpoints.h]hKThe next chunk shows the three CXL host bridges without attached endpoints.}(hj1hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubj})}(hX { "port":"port2", "host":"pci0000:00", "depth":1, "nr_dports":2, "dports":[ { "dport":"0000:00:01.3", "alias":"device:55", "id":2 }, { "dport":"0000:00:07.1", "alias":"device:5d", "id":113 } ] }, { "port":"port3", "host":"pci0000:a8", "depth":1, "nr_dports":1, "dports":[ { "dport":"0000:a8:01.1", "alias":"device:c3", "id":0 } ] }, { "port":"port4", "host":"pci0000:2a", "depth":1, "nr_dports":1, "dports":[ { "dport":"0000:2a:01.1", "alias":"device:d0", "id":0 } ] } ],h]hX { "port":"port2", "host":"pci0000:00", "depth":1, "nr_dports":2, "dports":[ { "dport":"0000:00:01.3", "alias":"device:55", "id":2 }, { "dport":"0000:00:07.1", "alias":"device:5d", "id":113 } ] }, { "port":"port3", "host":"pci0000:a8", "depth":1, "nr_dports":1, "dports":[ { "dport":"0000:a8:01.1", "alias":"device:c3", "id":0 } ] }, { "port":"port4", "host":"pci0000:2a", "depth":1, "nr_dports":1, "dports":[ { "dport":"0000:2a:01.1", "alias":"device:d0", "id":0 } ] } ],}hj?sbah}(h]h ]h"]h$]h&]hhuh1j|hhhKhhhhubh)}(hNext we have the `Root Decoders` belonging to :code:`root0`. This root decoder is a pass-through decoder because :code:`interleave_ways` is set to :code:`1`.h](hNext we have the }(hjMhhhNhNubj)}(h`Root Decoders`h]h Root Decoders}(hjUhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjMubh belonging to }(hjMhhhNhNubjN)}(h :code:`root0`h]hroot0}(hjghhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjMubh7. This root decoder is a pass-through decoder because }(hjMhhhNhNubjN)}(h:code:`interleave_ways`h]hinterleave_ways}(hjzhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjMubh is set to }(hjMhhhNhNubjN)}(h :code:`1`h]h1}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjMubh.}(hjMhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hLThis information is generated by the CXL driver reading the ACPI CEDT CMFWS.h]hLThis information is generated by the CXL driver reading the ACPI CEDT CMFWS.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubj})}(hX"decoders:root0":[ { "decoder":"decoder0.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "max_available_extent":0, "volatile_capable":true, "nr_targets":1, "targets":[ { "target":"pci0000:d2", "alias":"ACPI0016:00", "position":0, "id":5 } ],h]hX"decoders:root0":[ { "decoder":"decoder0.0", "resource":825975898112, "size":137438953472, "interleave_ways":1, "max_available_extent":0, "volatile_capable":true, "nr_targets":1, "targets":[ { "target":"pci0000:d2", "alias":"ACPI0016:00", "position":0, "id":5 } ],}hjsbah}(h]h ]h"]h$]h&]hhuh1j|hhhKhhhhubh)}(hFinally we have the `Memory Region` associated with the `Root Decoder` :code:`decoder0.0`. This region describes the discrete region associated with the lone device.h](hFinally we have the }(hjhhhNhNubj)}(h`Memory Region`h]h Memory Region}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh associated with the }(hjhhhNhNubj)}(h`Root Decoder`h]h Root Decoder}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1jhjubh }(hjhhhNhNubjN)}(h:code:`decoder0.0`h]h decoder0.0}(hjhhhNhNubah}(h]h ]jZah"]h$]h&]languagehuh1jMhjubhM. This region describes the discrete region associated with the lone device.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhhhubj})}(hX{ "regions:decoder0.0":[ { "region":"region0", "resource":825975898112, "size":137438953472, "type":"ram", "interleave_ways":1, "decode_state":"commit", "mappings":[ { "position":0, "memdev":"mem0", "decoder":"decoder5.0" } ] } ] } ] } ]h]hX{ "regions:decoder0.0":[ { "region":"region0", "resource":825975898112, "size":137438953472, "type":"ram", "interleave_ways":1, "decode_state":"commit", "mappings":[ { "position":0, "memdev":"mem0", "decoder":"decoder5.0" } ] } ] } ] } ]}hjsbah}(h]h ]h"]h$]h&]hhuh1j|hhhKhhhhubeh}(h] single-deviceah ]h"] single deviceah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj@error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}jjs nametypes}jsh}jhs footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.