From eae1f98c02a48446bd17411fe03a6bee8424a475 Mon Sep 17 00:00:00 2001 From: Jiaqi Gao Date: Wed, 24 Sep 2025 13:58:27 +0800 Subject: [PATCH] cxl-ide: support tx/rx trans to insecure state Signed-off-by: Jiaqi Gao --- teeio-validator/include/cxl_ide_lib.h | 6 +++++ teeio-validator/include/intel_keyp.h | 4 ++- teeio-validator/library/cxl_ide_lib/cxl_ide.c | 27 +++++++++++++++++-- .../test_case/ide_km_common.c | 4 +++ 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/teeio-validator/include/cxl_ide_lib.h b/teeio-validator/include/cxl_ide_lib.h index 64ff4ad1..37dd3978 100644 --- a/teeio-validator/include/cxl_ide_lib.h +++ b/teeio-validator/include/cxl_ide_lib.h @@ -69,6 +69,12 @@ void cxl_cfg_rp_txrx_key_valid( bool valid ); +void cxl_cfg_rp_txrx_transto_insecure_state( + INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr, + CXL_IDE_STREAM_DIRECTION direction, + bool insecure_state + ); + void cxl_cfg_rp_start_trigger( INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr, bool start diff --git a/teeio-validator/include/intel_keyp.h b/teeio-validator/include/intel_keyp.h index cd90d294..975ecfc4 100644 --- a/teeio-validator/include/intel_keyp.h +++ b/teeio-validator/include/intel_keyp.h @@ -230,7 +230,9 @@ typedef union { uint32_t start_trigger:1; uint32_t rxkey_valid:1; uint32_t txkey_valid:1; - uint32_t rsvd:29; + uint32_t txtransto_insecure_state:1; + uint32_t rxtransto_insecure_state:1; + uint32_t rsvd:27; }; uint32_t raw; } INTEL_KEYP_CXL_LINK_ENC_CONTROL; diff --git a/teeio-validator/library/cxl_ide_lib/cxl_ide.c b/teeio-validator/library/cxl_ide_lib/cxl_ide.c index 772690a2..33580ce3 100644 --- a/teeio-validator/library/cxl_ide_lib/cxl_ide.c +++ b/teeio-validator/library/cxl_ide_lib/cxl_ide.c @@ -71,6 +71,8 @@ bool cxl_reset_kcbar_registers(ide_common_test_port_context_t *port_context) TEEIO_DEBUG((TEEIO_DEBUG_INFO, "cxl_reset_kcbar_registers before link_enc_ctrl=0x%08x\n", enc_ctrl.raw)); + enc_ctrl.rxtransto_insecure_state = 0; + enc_ctrl.txtransto_insecure_state = 0; enc_ctrl.rxkey_valid = 0; enc_ctrl.txkey_valid = 0; enc_ctrl.start_trigger = 0; @@ -819,6 +821,27 @@ void cxl_cfg_rp_txrx_key_valid( TEEIO_DEBUG((TEEIO_DEBUG_INFO, "cxl_cfg_rp_txrx_key_valid (direct=%d) after link_enc_control = 0x%08x\n", direction, enc_ctrl.raw)); } +void cxl_cfg_rp_txrx_transto_insecure_state( + INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr, + CXL_IDE_STREAM_DIRECTION direction, + bool insecure_state + ) +{ + INTEL_KEYP_CXL_LINK_ENC_CONTROL enc_ctrl = {.raw = mmio_read_reg32(&kcbar_ptr->link_enc_control)}; + TEEIO_DEBUG((TEEIO_DEBUG_INFO, "cxl_cfg_rp_txrx_transto_insecure_state (direct=%d) before link_enc_control = 0x%08x\n", direction, enc_ctrl.raw)); + + if(direction == CXL_IDE_STREAM_DIRECTION_RX) { + enc_ctrl.rxtransto_insecure_state = insecure_state ? 1 : 0; + } else { + enc_ctrl.txtransto_insecure_state = insecure_state ? 1 : 0; + } + + mmio_write_reg32(&kcbar_ptr->link_enc_control, enc_ctrl.raw); + + enc_ctrl.raw = mmio_read_reg32(&kcbar_ptr->link_enc_control); + TEEIO_DEBUG((TEEIO_DEBUG_INFO, "cxl_cfg_rp_txrx_transto_insecure_state (direct=%d) after link_enc_control = 0x%08x\n", direction, enc_ctrl.raw)); +} + void cxl_cfg_rp_start_trigger( INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr, bool start @@ -890,8 +913,8 @@ void cxl_dump_kcbar(INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr) INTEL_KEYP_CXL_LINK_ENC_CONTROL enc_control = {.raw = mmio_read_reg32(&kcbar_ptr->link_enc_control)}; TEEIO_PRINT(("enc_control : %08x\n", enc_control.raw)); - TEEIO_PRINT((" start_trigger=%d, rxkey_valid=%d, txkey_valid=%d\n", - enc_control.start_trigger, enc_control.rxkey_valid, enc_control.txkey_valid)); + TEEIO_PRINT((" start_trigger=%d, rxkey_valid=%d, txkey_valid=%d\n, txtransto_insecure_state: %d, rxtransto_insecure_state: %d", + enc_control.start_trigger, enc_control.rxkey_valid, enc_control.txkey_valid, enc_control.txtransto_insecure_state, enc_control.rxtransto_insecure_state)); } diff --git a/teeio-validator/library/cxl_ide_test_lib/test_case/ide_km_common.c b/teeio-validator/library/cxl_ide_test_lib/test_case/ide_km_common.c index 0056feef..0fc4bf09 100644 --- a/teeio-validator/library/cxl_ide_test_lib/test_case/ide_km_common.c +++ b/teeio-validator/library/cxl_ide_test_lib/test_case/ide_km_common.c @@ -447,6 +447,10 @@ bool cxl_teardown_ide_stream(void *test_context) INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *kcbar_ptr = (INTEL_KEYP_CXL_ROOT_COMPLEX_KCBAR *)upper_port->mapped_kcbar_addr; + // set RXTRANSTOINSECURESTATE and TXTRANSTOINSECURESTATE on the RootPort side + cxl_cfg_rp_txrx_transto_insecure_state(kcbar_ptr, CXL_IDE_STREAM_DIRECTION_RX, true); + cxl_cfg_rp_txrx_transto_insecure_state(kcbar_ptr, CXL_IDE_STREAM_DIRECTION_TX, true); + // clear LinkEncEnable on the RootPort side cxl_cfg_rp_linkenc_enable(kcbar_ptr, false);