Skip to content

Commit

Permalink
PCIe info design doc (#553)
Browse files Browse the repository at this point in the history
* Add pcieinfo check design(Azure#64)

* Update pcieinfo_design.md

change format

* Update pcieinfo_design.md

* Update pcieinfo_design.md

* Add the config file 

Add the config file format
  • Loading branch information
carycelestica authored Feb 14, 2020
1 parent 4a2dc55 commit 01fd86b
Showing 1 changed file with 112 additions and 0 deletions.
112 changes: 112 additions & 0 deletions doc/pcieinfo_design.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
## Motivation
Add a PCIe Diag tool for SONiC. This tool including three commands
### Commands

show platform pcieinfo -----> Show current device PCIe info
show platform pcieinfo -c -----> Check whether the PCIe info is correct
pcieutil pcie_generate -----> Generate an PCIe info congfig file

## Implementation
### show utility update
New item under menu `platform` in `show/main.py`
It will execute `pcieutil [options]`command

**Syntax**

show platform pcieinfo ----> pcieutil pcie_show
show platform pcieinfo --check ----> pcieutil pcie_check
show platform pcieinfo -c ----> pcieutil pcie_check


### pcieutil utility
New utility in `sonic-utilities/pcieutil/`
It will import device plugin `pcie_commonl.py` and print the output returned by different API functions

**Syntax:**

pcieutil pcie_show
This command will show the current PCIe info of current device

pcieutil pcie_check
This command will compare the pcie info it got currently with config file pcie.yaml

pcieutil pcie_generate
This command will generate pcie.yaml which used to record the original pcie info,to avoid use it by mistake,this command can not be executed by `show platform pcieinfo` command,but you can use it alone

**Common API**

Location: `sonic_platform_base/sonic_pice/pcie_common.py`

Function: This file is used to fulfill the main interfaces including functions

* **get_pcie_device()**
* Return a list including current pcie info of the device;
* **get_pcie_check()**
* Return a list including compare the result of comparison,if not found the config file pcie.yaml .it will raise a system erron and exit
* **dump_conf_yaml()**
* To generate pcie.yaml which used to record the original pcie info

**Config file**

Location: `device/Platofrm/plugins/pcie.yaml`

Function: This file is used to as a standard to distinguish the device PCIe info. for different platform, config file will locate in differnet path

***Format***

- bus: '00'
dev: '00'
fn: '0'
id: 1f0c
name: 'Host bridge: Intel Corporation Atom processor C2000 SoC Transaction Router'
- bus: '00'
dev: '01'
fn: '0'
id: 1f10
name: 'PCI bridge: Intel Corporation Atom processor C2000 PCIe Root Port 1'
- bus: '00'
dev: '02'
fn: '0'
id: 1f11
name: 'PCI bridge: Intel Corporation Atom processor C2000 PCIe Root Port 2'
- bus: '00'
dev: '03'
fn: '0'
id: 1f12
name: 'PCI bridge: Intel Corporation Atom processor C2000 PCIe Root Port 3'
......

## Command Output

root@sonic:~# show platform pcieinfo
==============================Display PCIe Device===============================
......
bus:dev.fn 01:00.0 - dev_id=0xb960, Ethernet controller: Broadcom Limited Device b960
bus:dev.fn 01:00.1 - dev_id=0xb960, Ethernet controller: Broadcom Limited Device b960

root@sonic:~# show platform pcieinfo -c
===============================PCIe Device Check================================
Error: [Errno 2] No such file or directory: '/usr/share/sonic/device/x86_64-cel_seastone-r0/plugins/pcie.yaml'
Not found config file, please add a config file manually, or generate it by running [pcieutil pcie_generate]

root@sonic:~# pcieutil pcie_generate
Are you sure to overwrite config file pcie.yaml with current pcie device info? [y/N]: y
generate config file pcie.yaml under path /usr/share/sonic/device/x86_64-cel_seastone-r0/plugins

root@sonic:~# show platform pcieinfo -c
===============================PCIe Device Check================================
......
PCI Device: Ethernet controller: Broadcom Limited Device b960 ------------------ [Passed]
PCI Device: Ethernet controller: Broadcom Limited Device b960 ------------------ [Passed]
PCIe Device Checking All Test ----------->>> PASSED

root@sonic:~# show platform pcieinfo -c
===============================PCIe Device Check================================
......
PCI Device: Ethernet controller: Broadcom Limited Device b960 ------------------ [Failed]
PCI Device: Ethernet controller: Broadcom Limited Device b960 ------------------ [Passed]
PCIe Device Checking All Test ----------->>> FAILED

## Open questions

0 comments on commit 01fd86b

Please sign in to comment.