Project

General

Profile

Actions

Feature #14501

closed

pcieadm could decode rcld

Added by Robert Mustacchi 6 months ago. Updated 6 months ago.

Status:
Closed
Priority:
Normal
Category:
cmd - userland programs
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:
Gerrit CR:

Description

I recently found a few older Intel systems that happened to have a Root Complex Link Declaration extended capability. This adds support for decoding those.

Actions #1

Updated by Electric Monk 6 months ago

  • Gerrit CR set to 2020
Actions #2

Updated by Robert Mustacchi 6 months ago

To test this, I decoded a few different devices with this capability:

rm@beowulf:~$ /usr/lib/pci/pcieadm show-cfgspace -f  rc/00-1b-00.pci rcld
Root Complex Link Declaration Capability (0x5)
  Capability Header: 0x10005
    |--> Capability ID: 0x5
    |--> Capability Version: 0x1
    |--> Next Capability Offset: 0x0
  Self Description: 0xf000100
    |--> Element Type: Configuration Space Element (0x0)
    |--> Number of Entries: 0x1
    |--> Component ID: 0x0
    |--> Port Number: 0xf
  Link 1 Description: 0x1
    |--> Link Valid: yes (0x1)
    |--> Link Type: RCRB (0x0)
    |--> Assosciate RCRB: no (0x0)
    |--> Target Component ID: 0x0
    |--> Target Port Number: 0x0
  Link 1 Address: 0xfed1c000
rm@beowulf:~$ /usr/lib/pci/pcieadm show-cfgspace -f  rc/00-1c-00.pci rcld
Root Complex Link Declaration Capability (0x5)
  Capability Header: 0x10005
    |--> Capability ID: 0x5
    |--> Capability Version: 0x1
    |--> Next Capability Offset: 0x0
  Self Description: 0x1000100
    |--> Element Type: Configuration Space Element (0x0)
    |--> Number of Entries: 0x1
    |--> Component ID: 0x0
    |--> Port Number: 0x1
  Link 1 Description: 0x1
    |--> Link Valid: yes (0x1)
    |--> Link Type: RCRB (0x0)
    |--> Assosciate RCRB: no (0x0)
    |--> Target Component ID: 0x0
    |--> Target Port Number: 0x0
  Link 1 Address: 0xfed1c000
rm@beowulf:~$ /usr/lib/pci/pcieadm show-cfgspace -f  rc/00-1c-04.pci rcld
Root Complex Link Declaration Capability (0x5)
  Capability Header: 0x10005
    |--> Capability ID: 0x5
    |--> Capability Version: 0x1
    |--> Next Capability Offset: 0x0
  Self Description: 0x5000100
    |--> Element Type: Configuration Space Element (0x0)
    |--> Number of Entries: 0x1
    |--> Component ID: 0x0
    |--> Port Number: 0x5
  Link 1 Description: 0x1
    |--> Link Valid: yes (0x1)
    |--> Link Type: RCRB (0x0)
    |--> Assosciate RCRB: no (0x0)
    |--> Target Component ID: 0x0
    |--> Target Port Number: 0x0
  Link 1 Address: 0xfed1c000

One of these were from a Westmere based system, while others were from an Ivy Bridge client system. I then ran the full util-tests test suite which has a bunch of regression tests and related for pcieadm:

rm@beowulf:~$ pfexec /opt/util-tests/bin/utiltest 
Test: /opt/util-tests/tests/allowed-ips (run as root)             [00:00] [PASS]
Test: /opt/util-tests/tests/ar/artest (run as root)               [00:01] [PASS]
Test: /opt/util-tests/tests/chown_test (run as root)              [00:00] [PASS]
Test: /opt/util-tests/tests/date_test (run as root)               [00:00] [PASS]
Test: /opt/util-tests/tests/find/findtest (run as root)           [00:00] [PASS]
Test: /opt/util-tests/tests/grep_test (run as root)               [00:02] [PASS]
Test: /opt/util-tests/tests/head/head_test (run as root)          [00:00] [PASS]
Test: /opt/util-tests/tests/libjedec_test (run as root)           [00:00] [PASS]
Test: /opt/util-tests/tests/libsff/libsff (run as root)           [00:00] [PASS]
Test: /opt/util-tests/tests/make_test (run as root)               [00:00] [PASS]
Test: /opt/util-tests/tests/mdb/mdbtest (run as root)             [00:02] [PASS]
Test: /opt/util-tests/tests/mergeq/mqt (run as root)              [00:00] [PASS]
Test: /opt/util-tests/tests/mergeq/wqt (run as root)              [00:00] [PASS]
Test: /opt/util-tests/tests/pcidbtest (run as root)               [00:01] [PASS]
Test: /opt/util-tests/tests/pcieadm-priv (run as root)            [00:02] [PASS]
Test: /opt/util-tests/tests/pcieadmtest (run as root)             [00:03] [PASS]
Test: /opt/util-tests/tests/printf_test (run as root)             [00:00] [PASS]
Test: /opt/util-tests/tests/set-linkprop (run as root)            [00:00] [PASS]
Test: /opt/util-tests/tests/sleep/sleeptest (run as root)         [00:15] [PASS]
Test: /opt/util-tests/tests/smbios (run as root)                  [00:00] [PASS]
Test: /opt/util-tests/tests/svr4pkg_test (run as root)            [00:00] [PASS]
Test: /opt/util-tests/tests/xargs_test (run as root)              [00:00] [PASS]

Test: /opt/util-tests/tests/awk/runtests.sh (run as nobody)       [02:55] [PASS]
Test: /opt/util-tests/tests/ctf/precheck (run as root)            [00:00] [PASS]
Test: /opt/util-tests/tests/ctf/ctftest (run as root)             [00:06] [PASS]
Test: /opt/util-tests/tests/demangle/afl-fast (run as root)       [00:01] [PASS]
Test: /opt/util-tests/tests/demangle/gcc-libstdc++ (run as root)  [00:00] [PASS]
Test: /opt/util-tests/tests/demangle/llvm-stdcxxabi (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libcustr/custr_remove (run as root)   [00:00] [PASS]
Test: /opt/util-tests/tests/libcustr/custr_trunc (run as root)    [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_00_blank (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_01_boolean (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_02_numbers (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_03_empty_arrays (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_04_number_arrays (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_05_strings (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_06_nested (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/libnvpair_json/json_07_nested_arrays (run as root) [00:00] [PASS]
Test: /opt/util-tests/tests/sed/sed_addr (run as root)            [00:00] [PASS]
Test: /opt/util-tests/tests/sed/multi_test (run as root)          [00:00] [PASS]

Results Summary
PASS      40

Running Time:   00:03:37
Percent passed: 100.0%
Log directory:  /var/tmp/test_results/20220217T012015
Actions #3

Updated by Robert Mustacchi 6 months ago

  • Subject changed from pcieadm could decode rclb to pcieadm could decode rcld
Actions #4

Updated by Robert Mustacchi 6 months ago

  • Description updated (diff)
Actions #5

Updated by Electric Monk 6 months ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

git commit 4dde95dacc64b35aa9882fcbd0a847355d130734

commit  4dde95dacc64b35aa9882fcbd0a847355d130734
Author: Robert Mustacchi <rm@fingolfin.org>
Date:   2022-02-18T01:48:17.000Z

    14501 pcieadm could decode rcld
    Reviewed by: Jason King <jason.brian.king@gmail.com>
    Reviewed by: Andy Fiddaman <andy@omnios.org>
    Approved by: Dan McDonald <danmcd@joyent.com>

Actions

Also available in: Atom PDF