Skip to content
  • Ben Widawsky's avatar
    9e58f52d
    hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5) · 9e58f52d
    Ben Widawsky authored
    
    
    A CXL 2.0 component is any entity in the CXL topology. All components
    have a analogous function in PCIe. Except for the CXL host bridge, all
    have a PCIe config space that is accessible via the common PCIe
    mechanisms. CXL components are enumerated via DVSEC fields in the
    extended PCIe header space. CXL components will minimally implement some
    subset of CXL.mem and CXL.cache registers defined in 8.2.5 of the CXL
    2.0 specification. Two headers and a utility library are introduced to
    support the minimum functionality needed to enumerate components.
    
    The cxl_pci header manages bits associated with PCI, specifically the
    DVSEC and related fields. The cxl_component.h variant has data
    structures and APIs that are useful for drivers implementing any of the
    CXL 2.0 components. The library takes care of making use of the DVSEC
    bits and the CXL.[mem|cache] registers. Per spec, the registers are
    little endian.
    
    None of the mechanisms required to enumerate a CXL capable hostbridge
    are introduced at this point.
    
    Note that the CXL.mem and CXL.cache registers used are always 4B wide.
    It's possible in the future that this constraint will not hold.
    
    Signed-off-by: default avatarBen Widawsky <ben.widawsky@intel.com>
    Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarAdam Manzanares <a.manzanares@samsung.com>
    Message-Id: <20220429144110.25167-3-Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    9e58f52d
    hw/cxl/component: Introduce CXL components (8.1.x, 8.2.5)
    Ben Widawsky authored
    
    
    A CXL 2.0 component is any entity in the CXL topology. All components
    have a analogous function in PCIe. Except for the CXL host bridge, all
    have a PCIe config space that is accessible via the common PCIe
    mechanisms. CXL components are enumerated via DVSEC fields in the
    extended PCIe header space. CXL components will minimally implement some
    subset of CXL.mem and CXL.cache registers defined in 8.2.5 of the CXL
    2.0 specification. Two headers and a utility library are introduced to
    support the minimum functionality needed to enumerate components.
    
    The cxl_pci header manages bits associated with PCI, specifically the
    DVSEC and related fields. The cxl_component.h variant has data
    structures and APIs that are useful for drivers implementing any of the
    CXL 2.0 components. The library takes care of making use of the DVSEC
    bits and the CXL.[mem|cache] registers. Per spec, the registers are
    little endian.
    
    None of the mechanisms required to enumerate a CXL capable hostbridge
    are introduced at this point.
    
    Note that the CXL.mem and CXL.cache registers used are always 4B wide.
    It's possible in the future that this constraint will not hold.
    
    Signed-off-by: default avatarBen Widawsky <ben.widawsky@intel.com>
    Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarAlex Bennée <alex.bennee@linaro.org>
    Reviewed-by: default avatarAdam Manzanares <a.manzanares@samsung.com>
    Message-Id: <20220429144110.25167-3-Jonathan.Cameron@huawei.com>
    Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Loading