hw/pci-bridge/cxl-upstream: Add properties to control link speed and width
To establish performance characteristics of a CXL device when used via a particular CXL topology (root ports, switches, end points) it is necessary to set the appropriate link speed and width in the PCI Express capability structure. Provide x-speed and x-link properties for this. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20240916173518.1843023-7-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
14bd0f3865
commit
fa19fe4e3a
@ -11,6 +11,7 @@
|
|||||||
#include "qemu/osdep.h"
|
#include "qemu/osdep.h"
|
||||||
#include "qemu/log.h"
|
#include "qemu/log.h"
|
||||||
#include "hw/qdev-properties.h"
|
#include "hw/qdev-properties.h"
|
||||||
|
#include "hw/qdev-properties-system.h"
|
||||||
#include "hw/pci/msi.h"
|
#include "hw/pci/msi.h"
|
||||||
#include "hw/pci/pcie.h"
|
#include "hw/pci/pcie.h"
|
||||||
#include "hw/pci/pcie_port.h"
|
#include "hw/pci/pcie_port.h"
|
||||||
@ -100,6 +101,7 @@ static void cxl_usp_reset(DeviceState *qdev)
|
|||||||
|
|
||||||
pci_bridge_reset(qdev);
|
pci_bridge_reset(qdev);
|
||||||
pcie_cap_deverr_reset(d);
|
pcie_cap_deverr_reset(d);
|
||||||
|
pcie_cap_fill_link_ep_usp(d, usp->width, usp->speed);
|
||||||
latch_registers(usp);
|
latch_registers(usp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -363,6 +365,10 @@ static void cxl_usp_exitfn(PCIDevice *d)
|
|||||||
static Property cxl_upstream_props[] = {
|
static Property cxl_upstream_props[] = {
|
||||||
DEFINE_PROP_UINT64("sn", CXLUpstreamPort, sn, UI64_NULL),
|
DEFINE_PROP_UINT64("sn", CXLUpstreamPort, sn, UI64_NULL),
|
||||||
DEFINE_PROP_STRING("cdat", CXLUpstreamPort, cxl_cstate.cdat.filename),
|
DEFINE_PROP_STRING("cdat", CXLUpstreamPort, cxl_cstate.cdat.filename),
|
||||||
|
DEFINE_PROP_PCIE_LINK_SPEED("x-speed", CXLUpstreamPort,
|
||||||
|
speed, PCIE_LINK_SPEED_32),
|
||||||
|
DEFINE_PROP_PCIE_LINK_WIDTH("x-width", CXLUpstreamPort,
|
||||||
|
width, PCIE_LINK_WIDTH_16),
|
||||||
DEFINE_PROP_END_OF_LIST()
|
DEFINE_PROP_END_OF_LIST()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -12,6 +12,10 @@ typedef struct CXLUpstreamPort {
|
|||||||
/*< public >*/
|
/*< public >*/
|
||||||
CXLComponentState cxl_cstate;
|
CXLComponentState cxl_cstate;
|
||||||
CXLCCI swcci;
|
CXLCCI swcci;
|
||||||
|
|
||||||
|
PCIExpLinkSpeed speed;
|
||||||
|
PCIExpLinkWidth width;
|
||||||
|
|
||||||
DOECap doe_cdat;
|
DOECap doe_cdat;
|
||||||
uint64_t sn;
|
uint64_t sn;
|
||||||
} CXLUpstreamPort;
|
} CXLUpstreamPort;
|
||||||
|
Loading…
Reference in New Issue
Block a user