感谢回复。针对我提交的两个现象可能有所误解,且其中"MPS / MRRS 出厂已调至最优"这一表述与 PCIe 协议规范的定义不符。
一、MPS 与 MRRS 是 PCIe 协议规范定义的寄存器域
二者均位于 PCI Express Capability 的 Device Control Register(相对 capability 起始偏移 08h),定义见 PCI Express Base Specification §7.5.3.4:
位域 名称 编码
bits [2:0] Max_Payload_Size (MPS) 000b=128B、001b=256B、010b=512B、011b=1024B
bits [7:5] Max_Read_Request_Size (MRRS) 000b=128B、001b=256B、010b=512B、011b=1024B、100b=2048B、101b=4096B
其取值上限由 Device Capabilities Register (§7.5.3.3) 的 Max_Payload_Size_Supported 字段给出,属于硬件能力上报,由软件(操作系统 / 驱动 / 管理程序)在枚举阶段决定实际写多少。也就是说,这两个值是由主机侧软件在运行时配置的协议参数,而非芯片厂商在产品出厂时可以固化并宣称"最优"的私有调优项。
MRRS 仅约束本 Function 发出的读请求长度上限,规范中不存在"对端不支持某 MRRS"的情形,改小只会降低吞吐、不会破坏协议正确性。
故 MRRS=128 在任何 PCIe 设备上都是合法且必须被接受的配置。 若写入后被自动回滚,只能说明有代码路径在重写该寄存器