.. SPDX-License-Identifier: GPL-2.0 ============= Single Device ============= This cxl-cli configuration dump shows the following host configuration: * A single socket system with one CXL root * CXL Root has Four (4) CXL Host Bridges * One CXL Host Bridges has a single CXL Memory Expander Attached * No interleave is present. This output is generated by :code:`cxl list -v` and describes the relationships between objects exposed in :code:`/sys/bus/cxl/devices/`. :: [ { "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 } ], This 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. The `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. :: "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 } ], This 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`.. :: "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" } ] } ], This chunk shows the endpoints attached to the host bridge :code:`port1`. :code:`endpoint5` contains a single configured decoder :code:`decoder5.0` which has the same interleave configuration as :code:`region0` (shown later). Next we have the decoders belonging to the host bridge: :: "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 } ] } ] }, Host Bridge :code:`port1` has a single decoder (:code:`decoder1.0`), whose only target is :code:`dport1` - which is attached to :code:`endpoint5`. The next chunk shows the three CXL host bridges without attached endpoints. :: { "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 } ] } ], Next 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`. This information is generated by the CXL driver reading the ACPI CEDT CMFWS. :: "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 } ], Finally we have the `Memory Region` associated with the `Root Decoder` :code:`decoder0.0`. This region describes the discrete region associated with the lone device. :: "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" } ] } ] } ] } ]