Hi.
So I’ve unlocked manually setting the PCIe Max Payload size, Max Read Request, and set them from Auto to 4096.
But each device is still only running 128 bytes each.
The entire bus is attached by a PEX 8747 which supports 2048 byte transactions, and I have a couple of devices attached which support 512, 512, 256, and 128 respectively, but they are all only running at 128 bytes.
If I lspci on the root bridge from the CPU (E3-1290 V2) it claims to only support 128 byte transactions.
Am I being limited by that, or the ‘slow’ device? Or something else.
I’m not very familiar with trying to RE EFI modules, but I’ve extracted the PCI bus driver & host bridge driver. Nothing immediately obvious (if x > 128 x = 128).
I thought maybe I’m looking at the wrong modules, so I went to the setup data and pulled the submenu info.
0xA8BEF Form: PCI Subsystem Settings, FormId: 0x40C {01 86 0C 04 D0 09}
0xA8BF5 Text: Statement.Prompt: PCI Bus Driver Version, TextTwo: 00.00 {03 08 D4 09 D6 09 D5 09}
Where is 03 08 D4 09 D6 09 D5 09
coming from? 0x0308 seems common between all statements that have a TextTwo
value.
PciBus.efi
did have 020502
which is the version string printed, but Ghidra has nothing pointing to those bytes, it was just by chance a couple of bytes before the gImageHandle
.
03 is the item type - text.
08 is length.
D4 09 is PCI Bus Driver Version
string.
The other two halfwords also represent strings.