精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux操作系統中如何按下PCIe的復位鍵

Spinal FPGA ? 來源:Spinal FPGA ? 2024-01-20 09:31 ? 次閱讀

編 者 按

Linux操作系統中,看如何按下PCIe的復位鍵

操作系統中的PCIe

拿一張PCIe Spec中的拓撲圖:

a103e3fe-b6c2-11ee-8b88-92fbcf53809c.jpg

每一張PCIe EP設備連接Switch也好,還是直接插到RC上也好,按照PCIe的協議規定,PCIe是一個點對點傳輸協議,對于每個EP設備,其作為dwon stream端口,而與其對應的,則是其upstream 端口。像在Switch中的結構:

a122eba0-b6c2-11ee-8b88-92fbcf53809c.jpg

這里面對于Switch而言具有三個Downstream Port,而對于插在上面的三個EP設備而言,其是EP設備的Upstream Port。這三個Switch中的三個DownStream Port在Linux操作系統中也會創建三個PCI文件系統。


在PCIe體系結構中,如果作為EP的設備出現了故障,那么往往其Upstream Port也是會受到影響。通過系統重啟可以解決,而在一些場景下,可能系統重啟不太能接受,那么能否有其他方式來對這條出現問題的點對點鏈路進行下恢復呢?


按下Linux里面的PCIe復位鍵。

找到EP的Upstream Port

EP設備的Upstream Port在Linux操作系統中會當作一個PCIe Bridge Port,通過lspci是能夠看到的。

對于如何找到對應的EP設備的Upstream Port,如果你對lspci工具命令行熟悉的話,可以通過lspci -tv指令去獲取對應的Upstream Port。如果不熟,也沒關系,提供一段python代碼,可以獲取到EP對應的Upstream Port的BDF號。

importos

deffind_upstreamport(ep_bdf):
result_dirs = []
forroot, dirs, files inos.walk("/sys/devices"):
fordir indirs:
ifdir == ep_bdf:
returnos.path.basename(root)
print("{0} upstream port not found".format(ep_bdf))

參數ep_bdf為對應的ep設備的bdf號,需帶上domain域,形式為xxxxxx.x

Secondary Bus Reset

對于Port bridge,其配置空間定義中Bridge Control Register (Offset 3Eh)包含Secondary Bus Reset定義:

a14a113a-b6c2-11ee-8b88-92fbcf53809c.jpg

按照協議中Secondary Bus Reset的定義:

設置該位會觸發相應 PCI Express 端口上的熱復位。軟件必須確保最短復位持續時間 (Trst)。軟件和系統必須遵守第 6.6 節中定義的先訪問后復位時序要求,除非使用就緒通知機制(請參閱第 6.23 節)或設置相關功能狀態寄存器中的立即就緒位。

端口配置寄存器不得更改,除非需要更新端口狀態。

該位的默認值為 0b。

即我們可以通過對該位域先寫1,再寫0從而對Port Bridge下的設備進行復位。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11123

    瀏覽量

    207882
  • 操作系統
    +關注

    關注

    37

    文章

    6543

    瀏覽量

    122724
  • 端口
    +關注

    關注

    4

    文章

    915

    瀏覽量

    31851

原文標題:按下Linux里PCIe的復位鍵

文章出處:【微信號:Spinal FPGA,微信公眾號:Spinal FPGA】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Linux操作系統常見文件類型分析

    Linux操作系統常見文件類型分析,壓縮和打包文件,普通文件格式,系統文件
    發表于 01-06 17:00 ?960次閱讀

    labview在window操作系統中生成的exe能否移植到linux操作系統

    沒有找到破解的labview for linux。于是想能不能在window操作系統寫好程序,打包成exe。之后能否移植到用linux操作系統
    發表于 03-11 17:49

    LINUX操作系統

    Linux操作系統,分為好幾種,它們有什么區別嗎?今天安裝了個烏班圖操作系統,這個LINUX操作系統如何?本人不太清楚,還請前輩指點一
    發表于 12-16 18:34

    STM32移植FreeRTOS復位會殺死操作系統的原因?

    根據網上資料移植FreeRTOS到STM32上面成功做了幾個任務,結果出現一個奇怪的現象就是復位會殺死操作系統即任何任務全部死掉。但是
    發表于 08-03 08:00

    Linux操作系統

    linux的教學內容1 、Linux概述 2 、Linux操作系統安裝3、 Linux的內核 4 、Li
    發表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b>

    Linux操作系統原理及應用

    Linux操作系統原理及應用 1.1  操作系統的地位 1.2  操作系統的功能 1.3  操作系統的發
    發表于 04-28 14:53 ?0次下載

    Linux與其他操作系統的區別

    Linux與其他操作系統的區別 Linux與其他操作系統的區別  Linux可以與MS-DOS、OS/2、Windows等其他
    發表于 01-18 12:42 ?1632次閱讀

    什么是Linux操作系統

    什么是Linux操作系統  簡單地說,Linux是一套
    發表于 12-26 12:04 ?1393次閱讀

    手機支持的Linux操作系統

    手機支持的Linux操作系統   Linux系統Linux系統是一個源代
    發表于 01-28 17:07 ?1788次閱讀

    Linux快速入門之安裝Linux操作系統及小結

    .4 實驗內容安裝Linux操作系統 1.實驗目的 讀者通過親自動手安裝Linux操作系統,對Linux有個初步的認識,并且加深對
    發表于 10-18 14:16 ?0次下載

    基于Linux操作系統C語言編程入門

    基于Linux操作系統C語言編程入門
    發表于 10-27 15:36 ?11次下載
    基于<b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>下</b>C語言編程入門

    Linux操作系統的PCI驅動開發

    、安全的優點,尤其是Linux加入GNU并遵循公共版權許可證(GPL)之后,幾乎所有的GNU軟件都可以移植到Linux,從而完善和提高了Linux系統的使用性,并逐步成為通信、工業控制
    發表于 12-03 01:22 ?1177次閱讀
     <b class='flag-5'>Linux</b><b class='flag-5'>操作系統</b><b class='flag-5'>下</b>的PCI驅動開發

    Linux操作系統C語言編程入門.pdf

    Linux操作系統C語言編程入門
    發表于 05-17 10:08 ?95次下載

    趣談Linux操作系統

    趣談Linux操作系統
    的頭像 發表于 01-13 16:00 ?6350次閱讀

    Linux終端命令操作常用的快捷

    作為一名 Linux 的開發人員,和 Linux 系統打交道是每天必做的事情,通過 Linux 終端下命令行與
    的頭像 發表于 05-12 10:54 ?2167次閱讀