Package: pciutils Version: 1:3.13.0-1+b1 Severity: minor Tags: patch N.B. What does the unit 'T' (in GT/s) stand for? (T is a symbol for the unit 'tesla'.)
* What led up to the situation? Checking for defects with test-[g|n]roff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z < "man page" [Use "groff -e ' $' <file>" to find trailing spaces.] ["test-groff" is a script in the repository for "groff"; is not shipped] (local copy and "troff" slightly changed by me). [The fate of "test-nroff" was decided in groff bug #55941.] * What was the outcome of this action? troff: backtrace: '/home/bg/git/groff/build/s-tmac/an.tmac':560: macro 'I' troff: backtrace: file '<stdin>':40 troff:<stdin>:40: warning: trailing space in the line troff: backtrace: file '<stdin>':102 troff:<stdin>:102: warning: trailing space in the line troff: backtrace: file '<stdin>':142 troff:<stdin>:142: warning: tab character in unquoted macro argument an-end-check:<stdin>: Warning: Different number of .RS and .RE calls, an-RS-open=1 at end of file Output from "test-nroff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z ": troff: backtrace: '/home/bg/git/groff/build/s-tmac/an.tmac':560: macro 'I' troff: backtrace: file '<stdin>':40 troff:<stdin>:40: warning: trailing space in the line troff: backtrace: file '<stdin>':142 troff:<stdin>:142: warning: tab character in unquoted macro argument an-end-check:<stdin>: Warning: Different number of .RS and .RE calls, an-RS-open=1 at end of file * What outcome did you expect instead? No output (no warnings). -.- General remarks and further material, if a diff-file exist, are in the attachments. -- System Information: Debian Release: trixie/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 6.11.5-amd64 (SMP w/2 CPU threads; PREEMPT) Locale: LANG=is_IS.iso88591, LC_CTYPE=is_IS.iso88591 (charmap=ISO-8859-1), LANGUAGE not set Shell: /bin/sh linked to /usr/bin/dash Init: sysvinit (via /sbin/init) Versions of packages pciutils depends on: ii libc6 2.40-3 ii libkmod2 33+20240816-2 ii libpci3 1:3.13.0-1+b1 pciutils recommends no packages. Versions of packages pciutils suggests: ii bzip2 1.0.8-6 ii curl 8.11.0-1 ii lynx 2.9.2-1 ii wget 1.24.5-2+b1 -- no debconf information
Any program (person), that produces man pages, should check the output for defects by using (both groff and nroff) [gn]roff -mandoc -t -ww -b -z -K utf8 <man page> The same goes for man pages that are used as an input. For a style guide use mandoc -T lint -.- So any 'generator' should check its products with the above mentioned 'groff', 'mandoc', and additionally with 'nroff ...'. This is just a simple quality control measure. The 'generator' may have to be corrected to get a better man page, the source file may, and any additional file may. Common defects: Input text line longer than 80 bytes. Not removing trailing spaces (in in- and output). The reason for these trailing spaces should be found and eliminated. Not beginning each input sentence on a new line. Lines should thus be shorter. See man-pages(7), item 'semantic newline'. -.- The difference between the formatted output of the original and patched file can be seen with: nroff -mandoc <file1> > <out1> nroff -mandoc <file2> > <out2> diff -u <out1> <out2> and for groff, using "printf '%s\n%s\n' '.kern 0' '.ss 12 0' | groff -mandoc -Z - " instead of 'nroff -mandoc' Add the option '-t', if the file contains a table. Read the output of 'diff -u' with 'less -R' or similar. -.-. If 'man' (man-db) is used to check the manual for warnings, the following must be set: The option "-warnings=w" The environmental variable: export MAN_KEEP_STDERR=yes (or any non-empty value) or (produce only warnings): export MANROFFOPT="-ww -b -z" export MAN_KEEP_STDERR=yes (or any non-empty value) -.-. Output from "mandoc -T lint pcilmr.8": (shortened list) 23 input text line longer than 80 bytes -.-. Output from "test-groff -mandoc -t -ww -b -z pcilmr.8": (shortened list) 1 tab character in unquoted macro argument -.-. Change two HYPHEN-MINUSES (code 0x2D) to an em-dash (\(em), if one is intended. " \(em " creates a too big gap in the text (in "troff"). An en-dash is usually surrounded by a space, while an em-dash is used without spaces. "man" (1 byte characters in input) transforms an en-dash (\(en) to one HYPHEN-MINUS, and an em-dash to two HYPHEN-MINUSES without considering the space around it. If "--" are two single "-" (end of options) then use "\-\-". pcilmr.8:6:.RB [ "--margin" ] pcilmr.8:9:.B pcilmr --full pcilmr.8:12:.B pcilmr --scan pcilmr.8:148:.BI --margin " <downstream component> ..." pcilmr.8:151:.B --full pcilmr.8:153:.B --scan pcilmr.8:156:.B --scan -.-. Change -- in x--y to \(em (em-dash), or, if an option, to \-\- 9:.B pcilmr --full 12:.B pcilmr --scan 148:.BI --margin " <downstream component> ..." 151:.B --full 153:.B --scan 156:.B --scan -.-. Change a HYPHEN-MINUS (code 0x2D) to a minus(-dash) (\-), if it is in front of a name for an option, is a symbol for standard input, is a single character used to indicate an option, or is in the NAME section (man-pages(7)). N.B. - (0x2D), processed as a UTF-8 file, is changed to a hyphen (0x2010, groff \[u2010] or \[hy]) in the output. 6:.RB [ "--margin" ] 9:.B pcilmr --full 12:.B pcilmr --scan 120:.I -g 127:Utility detects such devices based on their Vendor ID - Device ID pair. 148:.BI --margin " <downstream component> ..." 151:.B --full 153:.B --scan 156:.B --scan 161:.B -c 164:.BI -e " <errors>" 169:.BI -o " <directory>" 175:.BI -d " <time>" 190:\fB-r\fI <recvn>\fP[\fI,<recvn>...\fP] 195:.BI -p " <parallel_lanes>" 202:.I -p 207:.B "Use only one of -T/-t options at the same time (same for -V/-v)." 212:.B -T 216:.BI -t " <steps>" 219:.B -V 221:.I -T 224:.BI -v " <steps>" 227:\fB-g\fI <recvn>\fPt=\fI<criteria>\fP{%|ps}[,f] 234:Specify pass/fail grading criteria for eye width (timing - t) or height 235:(voltage - v) for one of the link receivers. For EW you must choose one of the 245:.I -g 253:.BI "pcilmr -o " "csv ab:0.0 " "-r " "1,6 " "-g " "1t=20% " "-g " "1v=f,30 52:0.0 " "-l " "0,1,2 " "-TV" -.-. Test nr. 27: Strings longer than 3/4 of a standard line length (80) Use "\:" to split the string at the end of an output line, for example a long URLs (web address) 256 .UR https://gist.github.com/bombanya/f2b15263712757ffba1a11eea011c419 -.-. Test nr. 29: Wrong distance between sentences in the input file. Separate the sentences and subordinate clauses; each begins on a new line. See man-pages(7) ("Conventions for source file layout") and "info groff" ("Input Conventions"). The best procedure is to always start a new sentence on a new line, at least, if you are typing on a computer. Remember coding: Only one command ("sentence") on each (logical) line. E-mail: Easier to quote exactly the relevant lines. Generally: Easier to edit the sentence. Patches: Less unaffected text. Search for two adjacent words is easier, when they belong to the same line, and the same phrase. The amount of space between sentences in the output can then be controlled with the ".ss" request. N.B. The number of lines affected can be too large to be in a patch. 55:higher, including Pseudo Ports (Retimers). Lane Margining at Receiver enables system 57:L0 state. The margin information includes both voltage and time, in either direction from 58:the current Receiver position. Margining support for timing is required, while support 59:for voltage is optional at 16.0 GT/s and required at 32.0 GT/s and higher data rates. Also, 63:(by four points). Lane Margining at the Receiver capability enables users to margin PCIe 64:links without a hardware debugger and without the need to stop the target system. Utility 78:The utility uses values set in PCIe Base Spec Rev. 5.0 Section 8.4.2 as the default eye width and height 79:minimum references. Recommended values were taken from 114:uses full eye width and height values to grade lanes. However, it is possible that 115:device supports only one side margining. In such cases by default utility will 130:file. For such devices utility can automatically adjust port margining parameters 157:Scan for Links with negotiated speed 16 GT/s or higher. Mark "Ready" those of them 162:Print Device Lane Margining Capabilities only. Do not run margining. 170:Save margining results in csv form into the specified directory. Utility 184:Remember that Device may use Lane Reversal for Lane numbering. However, utility 185:uses logical lane numbers in arguments and for logging. Utility will automatically 214:than an Error Count Limit. Use this option to find Link limit. 235:(voltage - v) for one of the link receivers. For EW you must choose one of the 241:margining. In such cases by default utility will calculate EW or EH as a 242:double one side result. You can add 247:measurement of the full eye and it does not need to be multiplied. This is so called -.-. Test nr. 30: Split lines longer than 80 characters into two or more lines. Appropriate break points are the end of a sentence and a subordinate clause; after punctuation marks. N.B. The number of lines affected can be too large to be in a patch. Line 7, length 112 .RI [ "<common options>" ] " <link port> " [ "<link options>" "] [" "<link port> " [ "<link options>" ] " ..." ] Line 31, length 89 .I "Configured by the user before running the utility, the utility does not change them:" Line 40, length 84 .I "Configured by the utility during operation, utility set them to their original " Line 46, length 96 The Hardware Autonomous Speed Disable bit of the Link Control 2 register must be Set in both the Line 49, length 94 The Hardware Autonomous Width Disable bit of the Link Control register must be Set in both the Line 54, length 82 capability which is mandatory for all Ports supporting a data rate of 16.0 GT/s or Line 55, length 84 higher, including Pseudo Ports (Retimers). Lane Margining at Receiver enables system Line 56, length 86 software to obtain the margin information of a given Receiver while the Link is in the Line 57, length 89 L0 state. The margin information includes both voltage and time, in either direction from Line 58, length 86 the current Receiver position. Margining support for timing is required, while support Line 59, length 91 for voltage is optional at 16.0 GT/s and required at 32.0 GT/s and higher data rates. Also, Line 62, length 89 Utility allows to get an approximation of the eye margin diagram in the form of a rhombus Line 63, length 88 (by four points). Lane Margining at the Receiver capability enables users to margin PCIe Line 64, length 89 links without a hardware debugger and without the need to stop the target system. Utility Line 68, length 89 requires root privileges (to access Extended Configuration Space), but during our testing Line 69, length 94 there were no problems with the devices and they successfully returned to their normal initial Line 73, length 96 The PCIe specification provides reference values for the eye diagram, which are also used by the Line 78, length 104 The utility uses values set in PCIe Base Spec Rev. 5.0 Section 8.4.2 as the default eye width and height Line 82, length 88 Reference grading values currently used by the utility are presented in the table below: Line 114, length 82 uses full eye width and height values to grade lanes. However, it is possible that Line 125, length 81 Thanks to testing or directly from the manufacturer's documentation, we know that Line 130, length 81 file. For such devices utility can automatically adjust port margining parameters Line 157, length 82 Scan for Links with negotiated speed 16 GT/s or higher. Mark "Ready" those of them Line 158, length 81 in which at least one of the Link sides have Margining Ready bit set meaning that Line 185, length 82 uses logical lane numbers in arguments and for logging. Utility will automatically Line 247, length 84 measurement of the full eye and it does not need to be multiplied. This is so called Line 253, length 104 .BI "pcilmr -o " "csv ab:0.0 " "-r " "1,6 " "-g " "1t=20% " "-g " "1v=f,30 52:0.0 " "-l " "0,1,2 " "-TV" -.-. Use \(en (en-dash) for a dash between space characters, not a minus (\-) or a hyphen (-), except in the NAME section. pcilmr.8:25:Intel VMD for NVMe SSDs - in case of strange behavior of the pcilmr.8:127:Utility detects such devices based on their Vendor ID - Device ID pair. -.-. Split a punctuation mark from a single argument for a two-font macro 26:.BR pcilmr, -.-. "[" and "]", showing optional arguments to options, should be typeset in roman. 229:.IB " <recvn>" t=f[, "<criteria>" "{%|ps}]" 231:.IB " <recvn>" v= "<criteria>" "[,f]" 233:.IB " <recvn>" v=f[, "<criteria>" ] -.-. No space is needed before a quote (") at the end of a line 40:.I "Configured by the utility during operation, utility set them to their original " -.-. Space after an end of sentence. 55:higher, including Pseudo Ports (Retimers). Lane Margining at Receiver enables system 57:L0 state. The margin information includes both voltage and time, in either direction from 58:the current Receiver position. Margining support for timing is required, while support 59:for voltage is optional at 16.0 GT/s and required at 32.0 GT/s and higher data rates. Also, 63:(by four points). Lane Margining at the Receiver capability enables users to margin PCIe 64:links without a hardware debugger and without the need to stop the target system. Utility 78:The utility uses values set in PCIe Base Spec Rev. 5.0 Section 8.4.2 as the default eye width and height 79:minimum references. Recommended values were taken from 114:uses full eye width and height values to grade lanes. However, it is possible that 115:device supports only one side margining. In such cases by default utility will 130:file. For such devices utility can automatically adjust port margining parameters 143:.RI [ "<domain>" :] <bus> : <dev> . <func> 157:Scan for Links with negotiated speed 16 GT/s or higher. Mark "Ready" those of them 162:Print Device Lane Margining Capabilities only. Do not run margining. 170:Save margining results in csv form into the specified directory. Utility 184:Remember that Device may use Lane Reversal for Lane numbering. However, utility 185:uses logical lane numbers in arguments and for logging. Utility will automatically 214:than an Error Count Limit. Use this option to find Link limit. 235:(voltage - v) for one of the link receivers. For EW you must choose one of the 241:margining. In such cases by default utility will calculate EW or EH as a 242:double one side result. You can add 247:measurement of the full eye and it does not need to be multiplied. This is so called -.-. Output from "test-groff -mandoc -t -K utf8 -rF0 -rHY=0 -ww -b -z ": troff: backtrace: '/home/bg/git/groff/build/s-tmac/an.tmac':560: macro 'I' troff: backtrace: file '<stdin>':40 troff:<stdin>:40: warning: trailing space in the line troff: backtrace: file '<stdin>':142 troff:<stdin>:142: warning: tab character in unquoted macro argument an-end-check:<stdin>: Warning: Different number of .RS and .RE calls, an-RS-open=1 at end of file -.-. Additionally (general): FSF office address update. See https://lists.gnu.org/archive/html/bug-gnulib/2024-09/msg00004.html -.- Abbreviations get a '\&' added after their final full stop (.) to mark them as such and not as an end of a sentence. There is no need to add a '\&' before a full stop (.) if it has a character before it! Table headers, that are wider than any data in the corresponding column, do not need to be centered, so left adjustment is sufficient. The default value for kerning (.kern) and ligature (.lg) is one (1), so for n-mode (nroff) it should be set to zero (0) to avoid the processing of unnecessary code.
--- pcilmr.8 2024-11-15 01:54:50.134236869 +0000 +++ pcilmr.8.new 2024-11-15 12:18:37.471660290 +0000 @@ -3,13 +3,13 @@ pcilmr \- margin PCIe Links .SH SYNOPSIS .B pcilmr -.RB [ "--margin" ] +.RB [ "\-\-margin" ] .RI [ "<common options>" ] " <link port> " [ "<link options>" "] [" "<link port> " [ "<link options>" ] " ..." ] .br -.B pcilmr --full +.B pcilmr \-\-full .RI [ "<common options>" ] .br -.B pcilmr --scan +.B pcilmr \-\-scan .SH CONFIGURATION List of the requirements for links and system settings to run the margining test. @@ -22,8 +22,8 @@ Turn off PCIe Leaky Bucket Feature, Re-E .IP \[bu] Set Error Thresholds to 0; .IP \[bu] -Intel VMD for NVMe SSDs - in case of strange behavior of the -.BR pcilmr, +Intel VMD for NVMe SSDs \(en in case of strange behavior of the +.BR pcilmr , try to run it with the VMD turned off. .PP .B Device (link) requirements: @@ -37,7 +37,7 @@ utility supports 16 GT/s and 32 GT/s Lin Link Downstream Component must be at D0 Power Management State. .RE .IP -.I "Configured by the utility during operation, utility set them to their original " +.I "Configured by the utility during operation, utility set them to their original" .I "state after receiving the results:" .RS .IP \[bu] 3 @@ -48,6 +48,7 @@ Downstream Port and Upstream Port; .IP \[bu] The Hardware Autonomous Width Disable bit of the Link Control register must be Set in both the Downstream Port and Upstream Port. +.RE .SH DESCRIPTION .B pcilmr utility allows you to take advantage of the PCIe Lane Margining at the Receiver @@ -117,14 +118,14 @@ calculate EW or EH as a double one side 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 -.I -g +.I \-g link specific option (see below). .SH 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. +Utility detects such devices based on their Vendor ID \(en Device ID pair. Right now the list of special devices is hardcoded in .I margin_hw file. For such devices utility can automatically adjust port margining parameters @@ -139,40 +140,40 @@ will change device MaxVoltageOffset valu .SS Device Specifier .B "You can specify Downstream or Upstream Port of the Link." .TP -.B "<device/component>" \t +.B "<device/component> \t" .RI [ "<domain>" :] <bus> : <dev> . <func> (see .BR lspci (8)) .SS Utility Modes .TP -.BI --margin " <downstream component> ..." +.BI \-\-margin " <downstream component> ..." Margin selected Links. .TP -.B --full +.B \-\-full Margin all ready for testing (in a meaning similar to the -.B --scan +.B \-\-scan option) Links in the system (one by one). .TP -.B --scan +.B \-\-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. .SS Margining Common (for all specified links) options -.B -c +.B \-c Print Device Lane Margining Capabilities only. Do not run margining. .TP -.BI -e " <errors>" +.BI \-e " <errors>" Specify Error Count Limit for margining. .br Default: 4. .TP -.BI -o " <directory>" +.BI \-o " <directory>" Save margining results in csv form into the specified directory. Utility will generate file with the name in form of .RI "\[dq]lmr_" "<port>" "_Rx" # _ <timestamp> ".csv\[dq]" for each successfully tested receiver. .TP -.BI -d " <time>" +.BI \-d " <time>" Specify dwell time in seconds for the margining step. .br Default: 1 s @@ -187,52 +188,52 @@ determine Lane Reversal and tune its cal .br Default: all link lanes. .TP -\fB-r\fI <recvn>\fP[\fI,<recvn>...\fP] +\fB\-r\fI <recvn>\fP[\fI,<recvn>...\fP] Specify Receivers to select margining targets. .br Default: all available Receivers (including Retimers). .TP -.BI -p " <parallel_lanes>" +.BI \-p " <parallel_lanes>" Specify number of lanes to margin simultaneously. .br According to spec it's possible for Receiver to margin up to MaxLanes + 1 lanes simultaneously, but during testing, performing margining on several lanes simultaneously led to results that were different from sequential margining, so this feature requires additional verification and -.I -p +.I \-p option right now is for experiments mostly. .br Default: 1. .PP -.B "Use only one of -T/-t options at the same time (same for -V/-v)." +.B "Use only one of \-T/\-t options at the same time (same for \-V/\-v)." .br .B "Without these options utility will use MaxSteps from Device" .B "capabilities as test limit." .TP -.B -T +.B \-T Time Margining will continue until the Error Count is no more than an Error Count Limit. Use this option to find Link limit. .TP -.BI -t " <steps>" +.BI \-t " <steps>" Specify maximum number of steps for Time Margining. .TP -.B -V +.B \-V Same as -.I -T +.I \-T option, but for Voltage. .TP -.BI -v " <steps>" +.BI \-v " <steps>" Specify maximum number of steps for Voltage Margining. .TP -\fB-g\fI <recvn>\fPt=\fI<criteria>\fP{%|ps}[,f] +\fB\-g\fI <recvn>\fPt=\fI<criteria>\fP{%|ps}\fR[\fP,f\fR]\fP .TP -.IB " <recvn>" t=f[, "<criteria>" "{%|ps}]" +.IB " <recvn>" t=f\fR[\fP, "<criteria>" "{%\fR|\fPps}\fR]\fP" .TP -.IB " <recvn>" v= "<criteria>" "[,f]" +.IB " <recvn>" v= "<criteria>" "\fR[\fP,f\fR]\fP" .TP -.IB " <recvn>" v=f[, "<criteria>" ] -Specify pass/fail grading criteria for eye width (timing - t) or height -(voltage - v) for one of the link receivers. For EW you must choose one of the +.IB " <recvn>" v=f\fR[\fP, "<criteria>" \fR]\fP +Specify pass/fail grading criteria for eye width (timing \-t) or height +(voltage \-v) for one of the link receivers. For EW you must choose one of the units (% UI or ps), for EH mV is used. .br Additional flag @@ -242,7 +243,7 @@ margining. In such cases by default util double one side result. You can add .I f flag for -.I -g +.I \-g option to tell the utility that the result in one direction is actually the measurement of the full eye and it does not need to be multiplied. This is so called .RI ' "one side is the whole" "' grading mode." @@ -250,10 +251,10 @@ measurement of the full eye and it does .SH EXAMPLES Utility syntax example: .RS -.BI "pcilmr -o " "csv ab:0.0 " "-r " "1,6 " "-g " "1t=20% " "-g " "1v=f,30 52:0.0 " "-l " "0,1,2 " "-TV" +.BI "pcilmr \-o " "csv ab:0.0 " "\-r " "1,6 " "\-g " "1t=20% " "\-g " "1v=f,30 52:0.0 " "\-l " "0,1,2 " "\-TV" .RE -.UR https://gist.github.com/bombanya/f2b15263712757ffba1a11eea011c419 +.UR https://gist.github.com/\:bombanya/\:f2b15263712757ffba1a11eea011c419 Examples of collected results on different systems. .UE