[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH RFC 5/5] hw/cxl: Add UIO HDM decoder register fields
|
From: |
Ira Weiny |
|
Subject: |
[PATCH RFC 5/5] hw/cxl: Add UIO HDM decoder register fields |
|
Date: |
Wed, 17 May 2023 19:45:58 -0700 |
HDM decoders optionally support Unordered IO (UIO) access. Devices
indicate UIO support by setting the capable bit. Software can then set
up to UIO decoder count HDM's as UIO enabled when configuring the HDMs
on the device.
Define the UIO capable bit and decoder count. Default type 2 devices to
support UIO for testing.
Not-Yet-Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
hw/cxl/cxl-component-utils.c | 6 ++++++
include/hw/cxl/cxl_component.h | 2 ++
2 files changed, 8 insertions(+)
diff --git a/hw/cxl/cxl-component-utils.c b/hw/cxl/cxl-component-utils.c
index a9efa252b4ae..252b2beb2110 100644
--- a/hw/cxl/cxl-component-utils.c
+++ b/hw/cxl/cxl-component-utils.c
@@ -173,6 +173,12 @@ static void hdm_init_common(uint32_t *reg_state, uint32_t
*write_msk,
ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY, INTERLEAVE_256B,
1);
ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY, INTERLEAVE_4K, 1);
ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY, POISON_ON_ERR_CAP,
0);
+ if (type == CXL3_TYPE2_DEVICE) {
+ ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY, UIO_CAPABLE,
1);
+ ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_CAPABILITY,
UIO_DECODER_CNT,
+ decoder_count);
+ }
+
ARRAY_FIELD_DP32(reg_state, CXL_HDM_DECODER_GLOBAL_CONTROL,
HDM_DECODER_ENABLE, 0);
write_msk[R_CXL_HDM_DECODER_GLOBAL_CONTROL] = 0x3;
diff --git a/include/hw/cxl/cxl_component.h b/include/hw/cxl/cxl_component.h
index a5b5512aed94..7c24e699ef80 100644
--- a/include/hw/cxl/cxl_component.h
+++ b/include/hw/cxl/cxl_component.h
@@ -162,6 +162,8 @@ REG32(CXL_HDM_DECODER_CAPABILITY, CXL_HDM_REGISTERS_OFFSET)
FIELD(CXL_HDM_DECODER_CAPABILITY, INTERLEAVE_256B, 8, 1)
FIELD(CXL_HDM_DECODER_CAPABILITY, INTERLEAVE_4K, 9, 1)
FIELD(CXL_HDM_DECODER_CAPABILITY, POISON_ON_ERR_CAP, 10, 1)
+ FIELD(CXL_HDM_DECODER_CAPABILITY, UIO_CAPABLE, 13, 1)
+ FIELD(CXL_HDM_DECODER_CAPABILITY, UIO_DECODER_CNT, 16, 4)
REG32(CXL_HDM_DECODER_GLOBAL_CONTROL, CXL_HDM_REGISTERS_OFFSET + 4)
FIELD(CXL_HDM_DECODER_GLOBAL_CONTROL, POISON_ON_ERR_EN, 0, 1)
FIELD(CXL_HDM_DECODER_GLOBAL_CONTROL, HDM_DECODER_ENABLE, 1, 1)
--
2.40.0
[PATCH RFC 2/5] hw/cxl: Refactor component register initialization, Ira Weiny, 2023/05/17
[PATCH RFC 3/5] hw/cxl: Derive a CXL accelerator device from Type-3, Ira Weiny, 2023/05/17
[PATCH RFC 5/5] hw/cxl: Add UIO HDM decoder register fields,
Ira Weiny <=
[PATCH RFC 4/5] hw/cxl/accel: Add Back-Invalidate decoder capbility structure, Ira Weiny, 2023/05/17