[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFC qemu 6/6] hw/pci-bridge/cxl-upstream: Add properties to control lin
From: |
Jonathan Cameron |
Subject: |
[RFC qemu 6/6] hw/pci-bridge/cxl-upstream: Add properties to control link speed and width |
Date: |
Fri, 12 Jul 2024 13:24:14 +0100 |
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>
---
include/hw/pci-bridge/cxl_upstream_port.h | 4 ++++
hw/pci-bridge/cxl_upstream.c | 6 ++++++
2 files changed, 10 insertions(+)
diff --git a/include/hw/pci-bridge/cxl_upstream_port.h
b/include/hw/pci-bridge/cxl_upstream_port.h
index 12635139f6..f208397ffe 100644
--- a/include/hw/pci-bridge/cxl_upstream_port.h
+++ b/include/hw/pci-bridge/cxl_upstream_port.h
@@ -12,6 +12,10 @@ typedef struct CXLUpstreamPort {
/*< public >*/
CXLComponentState cxl_cstate;
CXLCCI swcci;
+
+ PCIExpLinkSpeed speed;
+ PCIExpLinkWidth width;
+
DOECap doe_cdat;
uint64_t sn;
} CXLUpstreamPort;
diff --git a/hw/pci-bridge/cxl_upstream.c b/hw/pci-bridge/cxl_upstream.c
index e51221a5f3..e673d69220 100644
--- a/hw/pci-bridge/cxl_upstream.c
+++ b/hw/pci-bridge/cxl_upstream.c
@@ -11,6 +11,7 @@
#include "qemu/osdep.h"
#include "qemu/log.h"
#include "hw/qdev-properties.h"
+#include "hw/qdev-properties-system.h"
#include "hw/pci/msi.h"
#include "hw/pci/pcie.h"
#include "hw/pci/pcie_port.h"
@@ -100,6 +101,7 @@ static void cxl_usp_reset(DeviceState *qdev)
pci_bridge_reset(qdev);
pcie_cap_deverr_reset(d);
+ pcie_cap_fill_link_ep_usp(d, usp->width, usp->speed);
latch_registers(usp);
}
@@ -363,6 +365,10 @@ static void cxl_usp_exitfn(PCIDevice *d)
static Property cxl_upstream_props[] = {
DEFINE_PROP_UINT64("sn", CXLUpstreamPort, sn, UI64_NULL),
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()
};
--
2.43.0
- [RFC qemu 0/6] hw/cxl: Link speed and width control, Jonathan Cameron, 2024/07/12
- [RFC qemu 1/6] hw/pci-bridge/cxl_root_port: Provide x-speed and x-width properties., Jonathan Cameron, 2024/07/12
- [RFC qemu 2/6] hw/pci-bridge/cxl_upstream: Provide x-speed and x-width properties., Jonathan Cameron, 2024/07/12
- [RFC qemu 3/6] hw/pcie: Factor out PCI Express link register filing common to EP., Jonathan Cameron, 2024/07/12
- [RFC qemu 4/6] hw/pcie: Provide a utility function for control of EP / SW USP link, Jonathan Cameron, 2024/07/12
- [RFC qemu 5/6] hw/mem/cxl-type3: Add properties to control link speed and width, Jonathan Cameron, 2024/07/12
- [RFC qemu 6/6] hw/pci-bridge/cxl-upstream: Add properties to control link speed and width,
Jonathan Cameron <=