0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Linux模塊的IDT PCIe熱插拔驅(qū)動程序

電子設(shè)計 ? 來源: IDT ? 作者: IDT ? 2021-05-14 07:44 ? 次閱讀

在典型的基于PCIe的系統(tǒng)中,枚舉PCIe總線,并在系統(tǒng)初始化期間將資源分配給每個PCIe端點設(shè)備。由于枚舉和資源分配算法的局限性,PCIe拓?fù)湟坏┏跏蓟?,便已修?fù),這意味著不得將新的端點設(shè)備或交換機(jī)連接到系統(tǒng)。

pIYBAGCeIxuAOh0pAAJpmSizleY786.png

IDT PCIe熱插拔驅(qū)動程序是一個可加載的Linux模塊,采用IDT專有的枚舉,資源分配和設(shè)備檢測算法,允許PCIe端點設(shè)備和交換機(jī)在運(yùn)行時連接到系統(tǒng)或與系統(tǒng)斷開連接,而不會影響系統(tǒng)的運(yùn)行狀態(tài)。系統(tǒng)中的其他PCIe設(shè)備。以圖1為參考,如果雙GigE控制器與系統(tǒng)斷開連接并隨后重新連接至其他交換機(jī)上的端口,則光纖通道控制器和SATA / SAS控制器的操作狀態(tài)將保持不變。這與PCIe熱插拔的Windows Vista實施不同,后者必須禁用,重新枚舉和重新分配資源給共享同一根端口的所有設(shè)備,然后新連接的設(shè)備才能運(yùn)行。通過寫入位于/ sysfs目錄下的文件,可以簡單地以任意方式或更舒適地將設(shè)備連接至系統(tǒng)或從系統(tǒng)斷開連接。將0寫入/sysfs/bus/pci/slots/0000:bb:dd.f/power文件(其中bb指定總線號,dd指定設(shè)備號,f指定下游端口的功能號)將禁用指定下游端口,同時將1寫入同一文件將啟用下游端口。禁用下游端口時,將從Linux內(nèi)核中刪除所有連接到該端口的設(shè)備,并且將調(diào)用PCI驅(qū)動程序remove()函數(shù)來執(zhí)行所需的清除操作。同樣,啟用下游端口后,將發(fā)現(xiàn)與其連接的所有設(shè)備,添加到Linux內(nèi)核中的PCI驅(qū)動程序probe()函數(shù)將被調(diào)用以執(zhí)行設(shè)備初始化。下游端口也可以由第三方內(nèi)核模式驅(qū)動程序通過使用標(biāo)題為“啟用和禁用下游端口”中描述的熱插拔驅(qū)動程序API來啟用或禁用。

下面的圖2描述了可以與運(yùn)行IDT PCIe熱插拔驅(qū)動程序的系統(tǒng)連接或斷開連接的設(shè)備類型的示例。

pIYBAGCeIy2ALvVvAAKN2Wm073Y779.png

實現(xiàn)這種熱插拔功能的關(guān)鍵是能夠為系統(tǒng)中的每個下游端口分配其他未使用的總線號和內(nèi)存資源。當(dāng)新設(shè)備連接到系統(tǒng)時,這些額外資源將用于使該設(shè)備進(jìn)入運(yùn)行狀態(tài),而不必?fù)p害共享同一根端口的其他設(shè)備的運(yùn)行狀態(tài)。

系統(tǒng)互連注意事項

圖3中所示的IDT系統(tǒng)互連拓?fù)溆梢粋€基于x86的根聯(lián)合處理器(RP)組成,該根復(fù)雜處理器通過IDT系統(tǒng)互連PCIe交換機(jī)連接到一個或多個基于智能x86的端點處理器(EP)。每個EP都使用IDT域內(nèi)交換機(jī)將它們連接到系統(tǒng)互連PCIe交換機(jī)的下游端口。這種拓?fù)浣Y(jié)構(gòu)與IDT系統(tǒng)互連軟件結(jié)合使用,可以在系統(tǒng)中任何兩個對等方之間進(jìn)行高速數(shù)據(jù)傳輸。

o4YBAGCeIz2AP5lfAAKRpW-0Plo637.png

當(dāng)使用這種類型的拓?fù)鋵⑿碌腅P連接到系統(tǒng)或從系統(tǒng)斷開連接時,熱插拔驅(qū)動程序會將EP視為與任何普通端點設(shè)備相同。但是,當(dāng)RP連接到系統(tǒng)或從系統(tǒng)斷開時,處理RP的方式有所不同。

通常,當(dāng)PCIe交換機(jī)的上游端口斷開時,如圖4所示,該交換機(jī)將對其所有下游端口進(jìn)行熱復(fù)位。此功能在系統(tǒng)互連拓?fù)渲惺遣豢扇〉模驗楫?dāng)RP與系統(tǒng)斷開連接時,它將阻止EP相互通信。熱插拔驅(qū)動程序通過檢測IDT PCIe系統(tǒng)互連交換機(jī)并禁用其上游端口斷開連接時生成熱重置的能力,從而解決了此問題。通過將linkDownHotReset模塊參數(shù)設(shè)置為非零值,可以在熱插拔驅(qū)動程序中禁用此功能。

熱插拔驅(qū)動程序還具有被動資源分配算法。該算法主要與IDT系統(tǒng)互連拓?fù)湟黄鹗褂?,該算法允許RP以最小的系統(tǒng)中斷將其連接到操作系統(tǒng)。通常,當(dāng)端點設(shè)備連接到根聯(lián)合體時,是根聯(lián)合體將內(nèi)存資源分配給該設(shè)備。對于被動資源分配,是由根聯(lián)合體將內(nèi)存資源分配給設(shè)備。在被動資源分配的情況下,應(yīng)該使用哪些內(nèi)存資源的“根聯(lián)合體”。默認(rèn)情況下,熱交換驅(qū)動程序中會啟用此功能,但可以通過設(shè)置passiveAllocationDisable模塊參數(shù)來禁用此功能。

編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 交換機(jī)
    +關(guān)注

    關(guān)注

    21

    文章

    2649

    瀏覽量

    99905
  • PCIe
    +關(guān)注

    關(guān)注

    15

    文章

    1247

    瀏覽量

    82906
  • PCIE總線
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    13423
收藏 人收藏

    評論

    相關(guān)推薦

    Linux驅(qū)動程序程序員指南

    電子發(fā)燒友網(wǎng)站提供《Linux驅(qū)動程序程序員指南.pdf》資料免費下載
    發(fā)表于 11-22 15:53 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動程序</b><b class='flag-5'>程序</b>員指南

    PCIe熱插拔機(jī)制介紹

    前言本文主要講述PCIe熱插拔機(jī)制,通過圖形方式方便讀者快速掌握。 一、概述 如果在PCIe設(shè)備不支持熱插拔的條件下,在不斷電的情況下插拔
    的頭像 發(fā)表于 11-20 09:07 ?664次閱讀
    <b class='flag-5'>PCIe</b><b class='flag-5'>熱插拔</b>機(jī)制介紹

    pcie設(shè)備驅(qū)動程序安裝步驟

    PCIe(Peripheral Component Interconnect Express)是一種高速串行計算機(jī)擴(kuò)展總線標(biāo)準(zhǔn),用于計算機(jī)內(nèi)部硬件組件之間的連接。安裝PCIe設(shè)備驅(qū)動程序是確保硬件
    的頭像 發(fā)表于 11-13 10:32 ?1117次閱讀

    熱插拔是什么意思

    熱插拔(Hot Swapping或Hot Swap),即帶電插拔,是指在不關(guān)閉系統(tǒng)電源的情況下,將模塊、板卡、存儲設(shè)備或其他外部設(shè)備插入或拔出系統(tǒng),且不影響系統(tǒng)正常工作的技術(shù)。這種技術(shù)廣泛應(yīng)用
    的頭像 發(fā)表于 10-29 17:49 ?1492次閱讀

    LSP 2.10 DaVinci Linux驅(qū)動程序

    電子發(fā)燒友網(wǎng)站提供《LSP 2.10 DaVinci Linux驅(qū)動程序.pdf》資料免費下載
    發(fā)表于 10-09 09:30 ?0次下載
    LSP 2.10 DaVinci <b class='flag-5'>Linux</b><b class='flag-5'>驅(qū)動程序</b>

    熱插拔電源是什么意思

    熱插拔電源,即帶電插拔電源,指的是在不關(guān)閉系統(tǒng)電源的情況下,能夠安全地將電源模塊、板卡等硬件設(shè)備插入或拔出系統(tǒng),而不影響系統(tǒng)的正常工作。這種技術(shù)大大提高了系統(tǒng)的可靠性、快速維修性、冗余性和對災(zāi)難
    的頭像 發(fā)表于 09-18 11:00 ?686次閱讀

    面向熱插拔應(yīng)用的MOSFET

    至關(guān)重要,此時就需要熱插拔控制器來調(diào)控浪涌電流。在電信服務(wù)器應(yīng)用中,背板終端電壓主流為48V和12V。在典型的12V背板系統(tǒng)中,由冗余電源組成,每個電源通過Oring MOSFET與并聯(lián)的熱插拔模塊相連。MOSFET在
    發(fā)表于 09-09 16:21 ?794次閱讀
    面向<b class='flag-5'>熱插拔</b>應(yīng)用的MOSFET

    Linux設(shè)備驅(qū)動程序分類有哪些

    Linux設(shè)備驅(qū)動程序是操作系統(tǒng)與硬件設(shè)備之間的橋梁,負(fù)責(zé)實現(xiàn)硬件設(shè)備與操作系統(tǒng)之間的通信和控制。Linux設(shè)備驅(qū)動程序的分類繁多,可以根據(jù)不同的標(biāo)準(zhǔn)進(jìn)行分類。 按硬件類型分類
    的頭像 發(fā)表于 08-30 15:11 ?638次閱讀

    linux驅(qū)動程序如何加載進(jìn)內(nèi)核

    ,需要了解Linux內(nèi)核的基本概念和API。以下是一些關(guān)鍵概念: 1.1 內(nèi)核模塊Linux內(nèi)核模塊是一種動態(tài)加載和卸載的代碼,可以在不重新啟動系統(tǒng)的情況下加載和卸載。
    的頭像 發(fā)表于 08-30 15:02 ?533次閱讀

    linux驅(qū)動程序主要有哪些功能

    Linux驅(qū)動程序是操作系統(tǒng)與硬件設(shè)備之間進(jìn)行通信的橋梁,負(fù)責(zé)實現(xiàn)硬件設(shè)備與操作系統(tǒng)之間的數(shù)據(jù)交換和控制。Linux驅(qū)動程序的主要功能包括以下幾個方面: 設(shè)備識別與初始化
    的頭像 發(fā)表于 08-30 14:47 ?417次閱讀

    linux驅(qū)動程序的編譯方法是什么

    Linux驅(qū)動程序的編譯方法主要包括兩種: 與內(nèi)核一起編譯 和 編譯成獨立的內(nèi)核模塊 。以下是對這兩種方法的介紹: 一、與內(nèi)核一起編譯 與內(nèi)核一起編譯意味著將驅(qū)動程序的源代碼直接集成到
    的頭像 發(fā)表于 08-30 14:46 ?700次閱讀

    linux驅(qū)動程序運(yùn)行在什么空間

    Linux 驅(qū)動程序是操作系統(tǒng)的一部分,負(fù)責(zé)管理硬件設(shè)備與操作系統(tǒng)之間的交互。驅(qū)動程序運(yùn)行在內(nèi)核空間(Kernel Space),這是操作系統(tǒng)的核心部分,與用戶空間(User Space)相對。內(nèi)核
    的頭像 發(fā)表于 08-30 14:37 ?472次閱讀

    虹科技術(shù) Linux環(huán)境再升級:PLIN驅(qū)動程序正式發(fā)布

    Linux驅(qū)動程序領(lǐng)域再添新成員,PLIN驅(qū)動程序現(xiàn)已正式發(fā)布。
    的頭像 發(fā)表于 06-28 13:34 ?386次閱讀
    虹科技術(shù) <b class='flag-5'>Linux</b>環(huán)境再升級:PLIN<b class='flag-5'>驅(qū)動程序</b>正式發(fā)布

    鍵盤熱插拔和非熱插拔的區(qū)別

    、電源供應(yīng)、軟件驅(qū)動、使用便利性、設(shè)備損壞與安全性、推動產(chǎn)業(yè)發(fā)展等。 1. 連接方式 熱插拔鍵盤通常使用USB或無線連接方式,插入即可立即生效。非熱插拔鍵盤一般使用PS/2接口連接,插入后需要重啟計算機(jī)才能使用。 2. 電源供
    的頭像 發(fā)表于 02-02 17:34 ?1w次閱讀