在典型的基于PCIe的系統(tǒng)中,枚舉PCIe總線,并在系統(tǒng)初始化期間將資源分配給每個(gè)PCIe端點(diǎn)設(shè)備。由于枚舉和資源分配算法的局限性,PCIe拓?fù)湟坏┏跏蓟阋研迯?fù),這意味著不得將新的端點(diǎn)設(shè)備或交換機(jī)連接到系統(tǒng)。
IDT PCIe熱插拔驅(qū)動(dòng)程序是一個(gè)可加載的Linux模塊,采用IDT專有的枚舉,資源分配和設(shè)備檢測(cè)算法,允許PCIe端點(diǎn)設(shè)備和交換機(jī)在運(yùn)行時(shí)連接到系統(tǒng)或與系統(tǒng)斷開連接,而不會(huì)影響系統(tǒng)的運(yùn)行狀態(tài)。系統(tǒng)中的其他PCIe設(shè)備。以圖1為參考,如果雙GigE控制器與系統(tǒng)斷開連接并隨后重新連接至其他交換機(jī)上的端口,則光纖通道控制器和SATA / SAS控制器的操作狀態(tài)將保持不變。這與PCIe熱插拔的Windows Vista實(shí)施不同,后者必須禁用,重新枚舉和重新分配資源給共享同一根端口的所有設(shè)備,然后新連接的設(shè)備才能運(yùn)行。通過(guò)寫入位于/ sysfs目錄下的文件,可以簡(jiǎn)單地以任意方式或更舒適地將設(shè)備連接至系統(tǒng)或從系統(tǒng)斷開連接。將0寫入/sysfs/bus/pci/slots/0000:bb:dd.f/power文件(其中bb指定總線號(hào),dd指定設(shè)備號(hào),f指定下游端口的功能號(hào))將禁用指定下游端口,同時(shí)將1寫入同一文件將啟用下游端口。禁用下游端口時(shí),將從Linux內(nèi)核中刪除所有連接到該端口的設(shè)備,并且將調(diào)用PCI驅(qū)動(dòng)程序remove()函數(shù)來(lái)執(zhí)行所需的清除操作。同樣,啟用下游端口后,將發(fā)現(xiàn)與其連接的所有設(shè)備,添加到Linux內(nèi)核中的PCI驅(qū)動(dòng)程序probe()函數(shù)將被調(diào)用以執(zhí)行設(shè)備初始化。下游端口也可以由第三方內(nèi)核模式驅(qū)動(dòng)程序通過(guò)使用標(biāo)題為“啟用和禁用下游端口”中描述的熱插拔驅(qū)動(dòng)程序API來(lái)啟用或禁用。
下面的圖2描述了可以與運(yùn)行IDT PCIe熱插拔驅(qū)動(dòng)程序的系統(tǒng)連接或斷開連接的設(shè)備類型的示例。
實(shí)現(xiàn)這種熱插拔功能的關(guān)鍵是能夠?yàn)橄到y(tǒng)中的每個(gè)下游端口分配其他未使用的總線號(hào)和內(nèi)存資源。當(dāng)新設(shè)備連接到系統(tǒng)時(shí),這些額外資源將用于使該設(shè)備進(jìn)入運(yùn)行狀態(tài),而不必?fù)p害共享同一根端口的其他設(shè)備的運(yùn)行狀態(tài)。
系統(tǒng)互連注意事項(xiàng)
圖3中所示的IDT系統(tǒng)互連拓?fù)溆梢粋€(gè)基于x86的根聯(lián)合處理器(RP)組成,該根復(fù)雜處理器通過(guò)IDT系統(tǒng)互連PCIe交換機(jī)連接到一個(gè)或多個(gè)基于智能x86的端點(diǎn)處理器(EP)。每個(gè)EP都使用IDT域內(nèi)交換機(jī)將它們連接到系統(tǒng)互連PCIe交換機(jī)的下游端口。這種拓?fù)浣Y(jié)構(gòu)與IDT系統(tǒng)互連軟件結(jié)合使用,可以在系統(tǒng)中任何兩個(gè)對(duì)等方之間進(jìn)行高速數(shù)據(jù)傳輸。
當(dāng)使用這種類型的拓?fù)鋵⑿碌腅P連接到系統(tǒng)或從系統(tǒng)斷開連接時(shí),熱插拔驅(qū)動(dòng)程序會(huì)將EP視為與任何普通端點(diǎn)設(shè)備相同。但是,當(dāng)RP連接到系統(tǒng)或從系統(tǒng)斷開時(shí),處理RP的方式有所不同。
通常,當(dāng)PCIe交換機(jī)的上游端口斷開時(shí),如圖4所示,該交換機(jī)將對(duì)其所有下游端口進(jìn)行熱復(fù)位。此功能在系統(tǒng)互連拓?fù)渲惺遣豢扇〉模驗(yàn)楫?dāng)RP與系統(tǒng)斷開連接時(shí),它將阻止EP相互通信。熱插拔驅(qū)動(dòng)程序通過(guò)檢測(cè)IDT PCIe系統(tǒng)互連交換機(jī)并禁用其上游端口斷開連接時(shí)生成熱重置的能力,從而解決了此問(wèn)題。通過(guò)將linkDownHotReset模塊參數(shù)設(shè)置為非零值,可以在熱插拔驅(qū)動(dòng)程序中禁用此功能。
熱插拔驅(qū)動(dòng)程序還具有被動(dòng)資源分配算法。該算法主要與IDT系統(tǒng)互連拓?fù)湟黄鹗褂?,該算法允許RP以最小的系統(tǒng)中斷將其連接到操作系統(tǒng)。通常,當(dāng)端點(diǎn)設(shè)備連接到根聯(lián)合體時(shí),是根聯(lián)合體將內(nèi)存資源分配給該設(shè)備。對(duì)于被動(dòng)資源分配,是由根聯(lián)合體將內(nèi)存資源分配給設(shè)備。在被動(dòng)資源分配的情況下,應(yīng)該使用哪些內(nèi)存資源的“根聯(lián)合體”。默認(rèn)情況下,熱交換驅(qū)動(dòng)程序中會(huì)啟用此功能,但可以通過(guò)設(shè)置passiveAllocationDisable模塊參數(shù)來(lái)禁用此功能。
編輯:hfy
-
交換機(jī)
+關(guān)注
關(guān)注
21文章
2645瀏覽量
99739 -
PCIe
+關(guān)注
關(guān)注
15文章
1241瀏覽量
82732 -
PCIE總線
+關(guān)注
關(guān)注
0文章
58瀏覽量
13396
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論