pcilmr - Man Page

margin PCIe Links

Synopsis

pcilmr [--margin] [<common options>] <link port> [<link options>] [<link port> [<link options>] ...]
pcilmr --full [<common options>]
pcilmr --scan

Configuration

List of the requirements for links and system settings to run the margining test.

BIOS settings (depends on the system, relevant for server baseboards with Xeon CPUs):

Device (link) requirements:

Configured by the user before running the utility, the utility does not change them:

Configured by the utility during operation, utility set them to their original state after receiving the results:

Description

pcilmr utility allows you to take advantage of the PCIe Lane Margining at the Receiver capability which is mandatory for all Ports supporting a data rate of 16.0 GT/s or higher, including Pseudo Ports (Retimers). Lane Margining at Receiver enables system software to obtain the margin information of a given Receiver while the Link is in the L0 state. The margin information includes both voltage and time, in either direction from the current Receiver position. Margining support for timing is required, while support for voltage is optional at 16.0 GT/s and required at 32.0 GT/s and higher data rates. Also, independent time margining and independent voltage margining is optional.

Utility allows to get an approximation of the eye margin diagram in the form of a rhombus (by four points). Lane Margining at the Receiver capability enables users to margin PCIe links without a hardware debugger and without the need to stop the target system. Utility can be useful to debug link issues due to receiver margins.

pcilmr requires root privileges (to access Extended Configuration Space), but during our testing there were no problems with the devices and they successfully returned to their normal initial state after the end of testing.

Results Grading

The PCIe specification provides reference values for the eye diagram, which are also used by the pcilmr to evaluate the results, but it seems that it makes sense to contact the manufacturer of a particular device for references.

The utility uses values set in PCIe Base Spec Rev. 5.0 Section 8.4.2 as the default eye width and height minimum references. Recommended values were taken from the PCIe Architecture PHY Test Spec Rev 5.0 (Transmitter Electrical Compliance).

Reference grading values currently used by the utility are presented in the table below:

16 GT/s (Gen 4)32 GT/s (Gen 5)
EWEHEWEH
Min18.75 ps
30% UI
15 mV9.375 ps
30% UI
15 mV
Rec23.75 ps
38% UI
21 mV10.157 ps
33% UI
19.75 mV

pcilmr uses full eye width and height values to grade lanes. However, it is possible that device supports only one side margining. In such cases by default utility will calculate EW or EH as a double one side result.

If info for specific device is available, you can configure grading criteria and tweak utility behavior in one-side only cases for your device using -g link specific option (see below).

Hardware Quirks Support

Thanks to testing or directly from the manufacturer's documentation, we know that some devices require special treatment during the margining. Utility detects such devices based on their Vendor ID - Device ID pair. Right now the list of special devices is hardcoded in margin_hw file. For such devices utility can automatically adjust port margining parameters or grading options.

For example, for Ice Lake CPUs RC ports pcilmr will change device MaxVoltageOffset value and will force the use of 'one side is the whole' grading mode.

Options

Device Specifier

You can specify Downstream or Upstream Port of the Link.

<device/component>

[<domain>:]<bus>:<dev>.<func> (see lspci(8))

Utility Modes

--margin <downstream component> ...

Margin selected Links.

--full

Margin all ready for testing (in a meaning similar to the --scan option) Links in the system (one by one).

--scan

Scan for Links with negotiated speed 16 GT/s or higher. Mark "Ready" those of them in which at least one of the Link sides have Margining Ready bit set meaning that these Links are ready for testing and you can run utility on them.

Margining Common (for all specified links) options

-c Print Device Lane Margining Capabilities only. Do not run margining.

-e <errors>

Specify Error Count Limit for margining.
Default: 4.

-o <directory>

Save margining results in csv form into the specified directory. Utility will generate file with the name in form of "lmr_<port>_Rx#_<timestamp>.csv" for each successfully tested receiver.

-d <time>

Specify dwell time in seconds for the margining step.
Default: 1 s

Examples

Utility syntax example:

pcilmr -o csv ab:0.0 -r 1,6 -g 1t=20% -g 1v=f,30 52:0.0 -l 0,1,2 -TV

Examples of collected results on different systems.

See Also

lspci(8), PCI Express Base Specification (Lane Margining at Receiver)

Info

30 May 2024 pciutils-3.13.0 The PCI Utilities