Feature #218

Setting Max Payload Size of End Point in correspondence with Max Payload Size of Root Complex

Added by Ilya Gurevich 5 months ago.

Status:NewStart date:07/03/2019
Priority:NormalDue date:
Assignee:-% Done:


Category:chipset configuration
Target version:-



Device: Intel Denverton NS (C3955 stepping B1) on Harcuvar CRB
Coreboot revision: 4.9
FSP build: 0015.D99 (provided as the package "565490-denverto-fsp-kit-pv004-v1-51")
OS: VxWorks 7 SR0540

During coreboot integration with Intel Denverton FSP I have found that PCIe bus enumeration doesn't care of matching Max Payload Size (MPS) of End Point (EP) and Root Complex (RC) as advised by PCIe standard.

FSP initializes MPS of RC to 512B whereas MPS of EP is left at default value 128B. As result EP device stops working correctly and reports uncorrectable error - Malformed TLP.
In my case EP is PCIe LAN Controller 82574L GEI (8086:10D3).

I have fixed this problem by adding new routine "pciexp_set_max_payload_size" that is called from "pciexp_tune_dev".
The updated files pciexp_device.c and pciexp.h are attached.



pciexp.h Magnifier (1.1 KB) Ilya Gurevich, 07/03/2019 02:04 PM

pciexp_device.c Magnifier (18 KB) Ilya Gurevich, 07/03/2019 02:04 PM

.config (25 KB) Ilya Gurevich, 07/03/2019 02:05 PM

Also available in: Atom PDF