CXL MLD Config Mechanism
1 前言
本文主要描述了两种核间通信的方法,用于host侧与device侧进行通信,实现FM配置下发等功能。两种方案一种是基于cxl2.0协议的mailbox,另一种是基于cxl.io共享内存及中断的IPC。
Mailbox为cxl2.0增加的特性,其中包含了FM相关的命令定义。也因此需要得到rambus的IP支持,目前还有待商定。IPC是一种确定的可以替代的实现方案,基于pcie或cxl.io的特性都可以实现,在支持pcie或cxl的设备环境可以进行一定的demo验证。
2 mailbox解析
mailbox提供了向设备发出命令的能力。本节参考了CXL2.0协议中8.2.8节,mailbox的相关寄存器的描述,及8.2.9中对command接口定义,还有7.6.8中FM模块的命令格式,对通过mailbox对FM模块的配置机制进行了梳理。基于寄存器层级,对相关配置方法,通信流程进行简要说明。
2.1 mailbox命令的执行流程
Host侧
Device侧
对应于host侧第4条之后
- device polls for doorbell to be set or waits for interrupt if configure
- device reads command register
- device reads command payload registers if input payload is non-empty
- device execute command (set FM regs and bram) or handler in background if configured
- device writes MB status register with return code
- device writes command register with payload length
- device writes command payload registers if needed
- device clear the doorbell register
2.2 mailbox寄存器
2.2.1 CXL device capabilities
用于使能配置空间mailbox特性
Primary Mailbox Registers
支持8.2.9中的所有命令,可以在pre-boot及os中使用,同时只有一个主体使用,注意切换事项。
Secondary Mailbox Registers(optional)
支持8.2.9中的部分命令,不支持中断。CXL建议备用邮箱支持8.2.9节中定义的Events, Logs, and Identify command sets。每次使时,使用它的软件都需要读取相应的配置寄存器,以找到mailbox寄存器的当前位置。
2.2.2 Mailbox Registers(cap offset varies)
MB capabilities register(MB reg offse