每次在链路上接收到type0类型的配置写时,pcie endpoint都会从配置写TLP报文头byte8~9字段中提取bus_number和device number作为自身的bus_number和device number,并且保持下来。
以一对一的验证环境为例,VIP PCIE对接PCIE EP。VIP PCIE可以发起配置读写和存储读写,此案例中,默认pcie ep是单funciton设备,因此function number为0。Cfgrd默认读取vendor id,cfgwr写默认写bar地址。
从表格中访问序列1、4、5,可以看到每次接收到cfgwr写bar地址,pcie ep都会返回状态为Successful Completion的报文,即使每次收到的cfgwr的bus_number和device number不一致。而从访问序列3 可以看到cfgrd携带的bus_number和device number如果和目标ep的bus_number和device number不一致,将无法访问成功,则pcie ep会返回完成状态为Unexpected Completion的cpl。
访问序列 | 类型 | bus_number | device number | Cpl 状态 |
1 | cfgwr | 0 | 0 | Successful Completion |
2 | Cfgrd | 0 | 0 | Successful Completion |
3 | Cfgrd | 0 | 1 | Unexpected Completion |
4 | cfgwr | 0 | 1 | Successful Completion |
5 | cfgwr | 1 | 0 | Successful Completion |