aboutsummaryrefslogtreecommitdiff
path: root/hw/cxl
diff options
context:
space:
mode:
authorJonathan Cameron <Jonathan.Cameron@huawei.com>2024-02-15 15:52:06 +0000
committerMichael S. Tsirkin <mst@redhat.com>2024-03-12 17:56:55 -0400
commit3a95f572112ab4c789d66af666644adcdb2b45a6 (patch)
treec6de0405e26845c5192350e02ad3d5d6fe890d2f /hw/cxl
parenta8516e5c9719cf45fd81d6790bc9ffdcf753376b (diff)
downloadqemu-3a95f572112ab4c789d66af666644adcdb2b45a6.zip
qemu-3a95f572112ab4c789d66af666644adcdb2b45a6.tar.gz
qemu-3a95f572112ab4c789d66af666644adcdb2b45a6.tar.bz2
hw/pci-bridge/pxb-cxl: Drop RAS capability from host bridge.
This CXL component isn't allowed to have a RAS capability. Whilst this should be harmless as software is not expected to look here, good to clean it up. Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Message-Id: <20240215155206.2736-1-Jonathan.Cameron@huawei.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/cxl')
-rw-r--r--hw/cxl/cxl-component-utils.c21
1 files changed, 17 insertions, 4 deletions
diff --git a/hw/cxl/cxl-component-utils.c b/hw/cxl/cxl-component-utils.c
index 84ab503..cd116c0 100644
--- a/hw/cxl/cxl-component-utils.c
+++ b/hw/cxl/cxl-component-utils.c
@@ -297,6 +297,7 @@ void cxl_component_register_init_common(uint32_t *reg_state,
caps = 3;
break;
case CXL2_ROOT_PORT:
+ case CXL2_RC:
/* + Extended Security, + Snoop */
caps = 5;
break;
@@ -326,8 +327,19 @@ void cxl_component_register_init_common(uint32_t *reg_state,
CXL_##reg##_REGISTERS_OFFSET); \
} while (0)
+ switch (type) {
+ case CXL2_DEVICE:
+ case CXL2_TYPE3_DEVICE:
+ case CXL2_LOGICAL_DEVICE:
+ case CXL2_ROOT_PORT:
+ case CXL2_UPSTREAM_PORT:
+ case CXL2_DOWNSTREAM_PORT:
init_cap_reg(RAS, 2, CXL_RAS_CAPABILITY_VERSION);
- ras_init_common(reg_state, write_msk);
+ ras_init_common(reg_state, write_msk);
+ break;
+ default:
+ break;
+ }
init_cap_reg(LINK, 4, CXL_LINK_CAPABILITY_VERSION);
@@ -335,9 +347,10 @@ void cxl_component_register_init_common(uint32_t *reg_state,
return;
}
- init_cap_reg(HDM, 5, CXL_HDM_CAPABILITY_VERSION);
- hdm_init_common(reg_state, write_msk, type);
-
+ if (type != CXL2_ROOT_PORT) {
+ init_cap_reg(HDM, 5, CXL_HDM_CAPABILITY_VERSION);
+ hdm_init_common(reg_state, write_msk, type);
+ }
if (caps < 5) {
return;
}