History log of /pciutils/lmr/ (Results 1 – 20 of 20)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
decf729821-Jun-2025 Martin Mares <[email protected]>

LMR: <string.h> is required for memset()

0e9018e327-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Fix margining for ports with Lane reversal

Current implementation interacts only with first Negotiated Link Width
lanes even when Maximum Link Width for the port is bigger than that and
Lane

pcilmr: Fix margining for ports with Lane reversal

Current implementation interacts only with first Negotiated Link Width
lanes even when Maximum Link Width for the port is bigger than that and
Lane reversal is used. Utility in such situation may try to margin lane
which is not used right now and erroneously fail with
'Error during caps reading' message. Fix that behaviour.

Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

e55794ab22-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Update usage and man: new arguments format and grading

Signed-off-by: Nikita Proshkin <[email protected]>

6de412a122-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Apply grading quirk for Ice Lake RC ports

Ice Lake RC ports don't support two side independent timing margining,
however the entire margin across the eye is what is reported by one side
marg

pcilmr: Apply grading quirk for Ice Lake RC ports

Ice Lake RC ports don't support two side independent timing margining,
however the entire margin across the eye is what is reported by one side
margining. Utility already has quirks for Ice Lake RC, so expand them
based on this grading information.

Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

839966c322-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Add option to configure margining dwell time

Signed-off-by: Nikita Proshkin <[email protected]>

390902d622-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Add new grading option

Original version of the utility used values from the Table 8-11 of the
PCIe Base Spec Rev 5.0 to evaluate lanes. But it seems that these values
relate only to the marg

pcilmr: Add new grading option

Original version of the utility used values from the Table 8-11 of the
PCIe Base Spec Rev 5.0 to evaluate lanes. But it seems that these values
relate only to the margining equipment and are not relevant to evaluating
the quality of connections.

The PCIe Base Spec Rev 5.0 sets the minimum values for the eye in the
section 8.4.2. Change default grading values in the utility according to
this section.

The specification uses the values of the full width and height of the eye,
so add these values to the output of the utility.

In addition, manufacturers can provide criteria for their devices that
differ from the standard ones. Usually this information falls under the
NDA, so add an option to the utility that will allow the user to set
necessary criteria for evaluating the quality of lanes.

Implement the following syntax for the -g(rading) option:
-g 1t=15ps,f | -g 6v=20

Use passed per link receiver criteria for the eye width (timing - t) or
height (voltage - v) in the utility results.

Additional flag f is for situations when port doesn't support two side
independent margining. In such cases by default calculate EW or EH as a
double one side result. User can add f flag for -g option to tell the
utility that the result in one direction is actually the measurement of
the full eye (for example, Ice Lake RC ports work in this way) and it does
not need to be multiplied.

Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

26359ed322-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Move most of pcilmr arguments parsing logic to the separate file

Also change arguments parsing logic: now link parameters (selected lane
numbers, timing or voltage steps, etc) need to be spe

pcilmr: Move most of pcilmr arguments parsing logic to the separate file

Also change arguments parsing logic: now link parameters (selected lane
numbers, timing or voltage steps, etc) need to be specified after link port
and will affect only this link margining (previously, one option was
applied to all links).

See updated man for syntax and example.

Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

92399f4422-May-2024 Nikita Proshkin <[email protected]>

pcilmr: Ensure that utility can accept either Downstream or Upstream link port

Previously, the utility expected only the Upstream Port to be input and,
in fact, passing the Downstream Port led to st

pcilmr: Ensure that utility can accept either Downstream or Upstream link port

Previously, the utility expected only the Upstream Port to be input and,
in fact, passing the Downstream Port led to strange and buggy error
messages. Improve arguments parsing logic to accept any side of the link.

It seems that the only use case that will not be available now is margining
the internal links of the switch, but this scenario looks as strange as
possible.

Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

370be0de18-Feb-2024 Pali Rohár <[email protected]>

pcilmr: Fix compilation for windows and djgpp

5de4f91b18-Feb-2024 Martin Mares <[email protected]>

pcilmr: Avoid strftime with %F and produce proper ISO 8601 time

%F is not portable.

de62139f18-Feb-2024 Martin Mares <[email protected]>

pcilmr: Clean up includes

1ffd04a818-Feb-2024 Martin Mares <[email protected]>

bitops.h moved to root

It is a part of the utilities, not of libpci.

4c93c5d317-Feb-2024 Martin Mares <[email protected]>

bitops.h should not be included from public pci.h

4eba399e27-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add handling of situations when device reports its MaxOffset values equal to 0

According to spec, for the MaxTimingOffset and MaxVoltageOffset parameters
'A 0 value may be reported if the ve

pcilmr: Add handling of situations when device reports its MaxOffset values equal to 0

According to spec, for the MaxTimingOffset and MaxVoltageOffset parameters
'A 0 value may be reported if the vendor chooses not to report the offset'.

Use max possible Offset value in such situations and report to the user.

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

394b24da27-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add option to save margining results in csv form

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

72f92bee27-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add support for unique hardware quirks

Make it possible to change receiver margining parameters depending on
current hardware specificity.

In our tests Intel Ice Lake CPUs RC ports reported

pcilmr: Add support for unique hardware quirks

Make it possible to change receiver margining parameters depending on
current hardware specificity.

In our tests Intel Ice Lake CPUs RC ports reported
MaxVoltageOffset = 50 (RxA), which led to results several times bigger
than the results of the hardware debugger.
Looks like in Intel Sapphire Rapids this was fixed, these CPU RC ports
report MaxVoltageOffset = 12 (RxA). To solve the problem it was decided
to hardcode Volt Offset to 12 (120 mV) for Ice Lake RC ports.

In the case of margining a specific link, only information about
Downstream and Upstream ports should be sufficient to decide whether to
use quirks, so the feature was implemented based on a list of devices
(vendor - device - revision triples), whose problems are known.

Back to Ice Lake ports, according to Integrators List on the pci-sig site,
the list of possible RC ports of Ice Lake Xeon's includes at least three
more options (with ids 347B/C/D) besides the one used in this commit, but
we don't have such processors to check the relevance of the MaxVoltageOffset
problem for these ports.

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

b796292027-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add function for default margining results log

Lanes are rated according to the minimum/recommended values.
The minimum values are taken from PCIe Base Spec Rev 5.0 section 8.4.4.
30% UI rec

pcilmr: Add function for default margining results log

Lanes are rated according to the minimum/recommended values.
The minimum values are taken from PCIe Base Spec Rev 5.0 section 8.4.4.
30% UI recommended value for timing is taken from NVIDIA presentation
"PCIe 4.0 Mass Electrical Margins Data Collection".

Receiver lanes are called 'Weird' if all results of all receiver lanes
are equal to the spec minimum value.

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

c04cf7c027-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add logging functions for margining

* Implement option to turn on/off logging for margining;
* Support systems with several PCI domains;
* margin_log_margining function prints margining in p

pcilmr: Add logging functions for margining

* Implement option to turn on/off logging for margining;
* Support systems with several PCI domains;
* margin_log_margining function prints margining in progress log using
one line messages for each Receiver in the form:
"Margining - <direction> - Lanes [<current simultaneous lanes>] - ETA:
<current direction-lanes margining remaining time> Steps: <current
margining steps done> Total ETA: <utility run total remaining time>".

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

73289e1327-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add margining process functions

* Implement the margining flow as described in the section "Example
Software Flow for Lane Margining at Receiver"
of the PCIe Base Spec Rev 5.0;
* Impleme

pcilmr: Add margining process functions

* Implement the margining flow as described in the section "Example
Software Flow for Lane Margining at Receiver"
of the PCIe Base Spec Rev 5.0;
* Implement margining commands formation and response parsing according
to the PCIe Base Spec Rev 5.0 table 4-26;
* Use Receiver margining parameters as described in the
PCIe Base Spec Rev 5.0 table 8-11;
* Support lane reversal and simultaneous margining of several link lanes.

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...

3d9ad79027-Dec-2023 Nikita Proshkin <[email protected]>

pcilmr: Add functions for device checking and preparations before main margining processes

Follow the checklist from PCIe Base Spec Rev 5.0 section 4.2.13.3
"Receiver Margin Testing Requirements":
*

pcilmr: Add functions for device checking and preparations before main margining processes

Follow the checklist from PCIe Base Spec Rev 5.0 section 4.2.13.3
"Receiver Margin Testing Requirements":
* Verify the Link is at 16 GT/s or higher data rate, in DO PM state;
* Verify that Margining Ready bit of the device is set;
* Disable the ASPM and Autonomous Speed/Width features for the duration
of the test.

Also verify that Upstream Port of the Link is Function 0 of a Device,
according to spec, only it must implement margining registers.

Reviewed-by: Sergei Miroshnichenko <[email protected]>
Signed-off-by: Nikita Proshkin <[email protected]>

show more ...


/pciutils/.gitignore
/pciutils/COPYING
/pciutils/ChangeLog
/pciutils/Makefile
/pciutils/README
/pciutils/README.Windows
/pciutils/TODO
/pciutils/common.c
/pciutils/compat/README
/pciutils/compat/getopt.c
/pciutils/compat/getopt.h
/pciutils/example.c
/pciutils/lib/.gitignore
/pciutils/lib/Makefile
/pciutils/lib/access.c
/pciutils/lib/aix-device.c
/pciutils/lib/bitops.h
/pciutils/lib/caps.c
/pciutils/lib/configure
/pciutils/lib/darwin.c
/pciutils/lib/dump.c
/pciutils/lib/ecam.c
/pciutils/lib/emulated.c
/pciutils/lib/fbsd-device.c
/pciutils/lib/filter.c
/pciutils/lib/generic.c
/pciutils/lib/header.h
/pciutils/lib/hurd.c
/pciutils/lib/i386-io-access.h
/pciutils/lib/i386-io-beos.h
/pciutils/lib/i386-io-cygwin.h
/pciutils/lib/i386-io-djgpp.h
/pciutils/lib/i386-io-haiku.h
/pciutils/lib/i386-io-hurd.h
/pciutils/lib/i386-io-linux.h
/pciutils/lib/i386-io-openbsd.h
/pciutils/lib/i386-io-sunos.h
/pciutils/lib/i386-io-windows.h
/pciutils/lib/i386-ports.c
/pciutils/lib/init.c
/pciutils/lib/internal.h
/pciutils/lib/libpci.pc.in
/pciutils/lib/libpci.ver
/pciutils/lib/mmio-ports.c
/pciutils/lib/names-cache.c
/pciutils/lib/names-hash.c
/pciutils/lib/names-hwdb.c
/pciutils/lib/names-net.c
/pciutils/lib/names-parse.c
/pciutils/lib/names.c
/pciutils/lib/names.h
/pciutils/lib/nbsd-libpci.c
/pciutils/lib/obsd-device.c
/pciutils/lib/params.c
/pciutils/lib/pci.h
/pciutils/lib/proc.c
/pciutils/lib/sylixos-device.c
/pciutils/lib/sysdep.h
/pciutils/lib/sysfs.c
/pciutils/lib/types.h
/pciutils/lib/ver2def.pl
/pciutils/lib/win32-cfgmgr32.c
/pciutils/lib/win32-kldbg.c
/pciutils/lib/win32-sysdbg.c
/pciutils/lib/winrsrc.rc.in
lmr.h
margin_hw.c
/pciutils/ls-caps-vendor.c
/pciutils/ls-caps.c
/pciutils/ls-ecaps.c
/pciutils/ls-kernel.c
/pciutils/ls-map.c
/pciutils/ls-tree.c
/pciutils/ls-vpd.c
/pciutils/lspci.c
/pciutils/lspci.h
/pciutils/lspci.man
/pciutils/maint/README
/pciutils/maint/gen-zone
/pciutils/maint/release
/pciutils/maint/release.pm
/pciutils/maint/tag-release
/pciutils/pci.ids
/pciutils/pci.ids.man
/pciutils/pcilib.man
/pciutils/pciutils.h
/pciutils/pciutils.lsm
/pciutils/pciutils.spec
/pciutils/setpci.c
/pciutils/setpci.man
/pciutils/tests/PCI-X-bridges-and-domains
/pciutils/tests/bridge-ctl-vga16
/pciutils/tests/broken-ecaps
/pciutils/tests/cap-MSI-mapping
/pciutils/tests/cap-address-xlation
/pciutils/tests/cap-aer-ecrc-label
/pciutils/tests/cap-aer-hdr
/pciutils/tests/cap-aer-log
/pciutils/tests/cap-aer-root
/pciutils/tests/cap-atomicops
/pciutils/tests/cap-debug-port
/pciutils/tests/cap-doe
/pciutils/tests/cap-dpc
/pciutils/tests/cap-dvsec-cxl
/pciutils/tests/cap-ea-1
/pciutils/tests/cap-exp-aspm-latencies
/pciutils/tests/cap-exp-dev2
/pciutils/tests/cap-exp-lnkcap2
/pciutils/tests/cap-exp-rev-slot
/pciutils/tests/cap-ht
/pciutils/tests/cap-l1-pm
/pciutils/tests/cap-multicast
/pciutils/tests/cap-pasid-pri
/pciutils/tests/cap-pci-af
/pciutils/tests/cap-pcie-1
/pciutils/tests/cap-pcie-2
/pciutils/tests/cap-ptm-1
/pciutils/tests/cap-ptm-2
/pciutils/tests/cap-rcec
/pciutils/tests/cap-rebar
/pciutils/tests/cap-vc-and-rcl
/pciutils/tests/cap-vc-pat
/pciutils/tests/cap-vendor-virtio
/pciutils/tests/pri-pasid
/pciutils/tests/tree-asus-p6t6
/pciutils/tests/tree-fsl-p2020
/pciutils/tests/tree-fujitsu-p8010
/pciutils/update-pciids.man
/pciutils/update-pciids.sh