專利名稱:一種Linux下PCI EXPRESS熱插拔的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,具體地說(shuō)是一種用于Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,實(shí)現(xiàn)PCI EXPRESS設(shè)備的插入和拔出的方法。
背景技術(shù):
PCI Express采用了目前業(yè)內(nèi)流行的點(diǎn)對(duì)點(diǎn)串行連接,比起PCI以及更早期的計(jì)算機(jī)總線的共享并行架構(gòu),每個(gè)設(shè)備都有自己的專用連接,不需要向整個(gè)總線請(qǐng)求帶寬,而且可以把數(shù)據(jù)傳輸率提高到一個(gè)很高的頻率,達(dá)到PCI所不能提供的高帶寬。相對(duì)于傳統(tǒng) PCI總線在單一時(shí)間周期內(nèi)只能實(shí)現(xiàn)單向傳輸,PCI Express的雙單工連接能提供更高的傳輸速率和質(zhì)量,它們之間的差異跟半雙工和全雙工類似。PCI Express采用串行方式傳輸數(shù)據(jù)。它和原有的ISA、PCI和AGP總線不同。這種傳輸方式,不必因?yàn)槟硞€(gè)硬件的頻率而影響到整個(gè)系統(tǒng)性能的發(fā)揮。當(dāng)然了,整個(gè)系統(tǒng)依然是一個(gè)整體,但是我們可以方便的提高某一頻率低的硬件的頻率,以便系統(tǒng)在沒(méi)有瓶頸的環(huán)境下使用。以串行方式提升頻率增進(jìn)效能,關(guān)鍵的限制在于采用什么樣的物理傳輸介質(zhì)。目前人們普遍采用銅線路,而理論上銅這個(gè)材質(zhì)可以提供的傳輸極限是10 (ibps。熱插拔即帶電插拔,熱插拔功能就是允許用戶在不關(guān)閉系統(tǒng),不切斷電源的情況下取出和更換損壞的硬盤、電源或板卡等部件,從而提高了系統(tǒng)對(duì)災(zāi)難的及時(shí)恢復(fù)能力、擴(kuò)展性和靈活性等。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種Linux下PCI EXPRESS熱插拔的方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,系統(tǒng)包括熱插拔服務(wù)程序和標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序,其中
熱插拔服務(wù)程序該程序分為L(zhǎng)inux核內(nèi)部分和核外部分,其控制邏輯以模塊的方式加載入內(nèi)核,負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作;核外部分為用戶空間腳本,從內(nèi)核中調(diào)用,并根據(jù)內(nèi)核傳回的信息執(zhí)行后續(xù)處理過(guò)程;
標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序系統(tǒng)調(diào)用驅(qū)動(dòng)程序,執(zhí)行驅(qū)動(dòng)程序的初始化代碼,這些代碼完成設(shè)備的設(shè)置,并填寫設(shè)備的PCI EXPRESS配置命令寄存器的相關(guān)標(biāo)志位來(lái)激活設(shè)備; 熱插拔服務(wù)程序和標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序?yàn)長(zhǎng)inux核心可加載模塊,且負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作;
在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,實(shí)現(xiàn)PCI EXPRESS設(shè)備的插入和拔出方法包括以下步驟
系統(tǒng)確認(rèn)要進(jìn)行熱插拔操作;
熱插拔服務(wù)程序根據(jù)PCI EXPRESS插槽的使用情況,分離PCI EXPRESS設(shè)備;人工進(jìn)行熱插拔操作;
如果是熱插入則加載驅(qū)動(dòng)模塊激活熱插入的設(shè)備,如果是熱拔出則是設(shè)備驅(qū)動(dòng)模塊保持靜默,操作系統(tǒng)釋放內(nèi)存空間和I/O空間,中斷線程曾經(jīng)屬于該設(shè)備的系統(tǒng)資源。在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,熱插拔服務(wù)程序調(diào)用了核心線程event
threado在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,在激活或者靜默PCI EXPRESS設(shè)備時(shí),使用了標(biāo)準(zhǔn)熱插拔驅(qū)動(dòng)模塊。在熱插入激活設(shè)備操作時(shí),執(zhí)行如下操作
1)執(zhí)行適配卡添加的一系列相關(guān)操作失敗恢復(fù)預(yù)處理,存在性檢驗(yàn)、打開電源,檢查link training狀態(tài),獲取設(shè)備基本信息,配置設(shè)備,為設(shè)備建立相關(guān)數(shù)據(jù)結(jié)構(gòu),掛接到上級(jí)總線;
2)為新添加的設(shè)備查找并掛接驅(qū)動(dòng)程序;
3)對(duì)于橋接設(shè)備,把它掛接到上級(jí)總線后,還要繼續(xù)對(duì)其下級(jí)總線進(jìn)行掃描和掛接;
4)通知用戶態(tài)守護(hù)進(jìn)程,更新插槽狀態(tài)。本發(fā)明的有益效果是通過(guò)動(dòng)態(tài)修改Linux內(nèi)核中的PCI EXPRESS設(shè)備的數(shù)據(jù)結(jié)構(gòu)信息,不需要專用的硬件設(shè)備和專用的驅(qū)動(dòng)程序,主要利用軟件進(jìn)行處理,成本很低且通用性好。
圖1是PCI EXPRESS設(shè)備熱插拔模型圖; 圖2是PCI EXPRESS設(shè)備熱插入示意圖3是PCI EXPRESS設(shè)備熱拔出示意圖。
具體實(shí)施例方式下面參照附圖,對(duì)本發(fā)明的內(nèi)容以及PCI-EXPRESS設(shè)備熱插拔的過(guò)程加以詳細(xì)說(shuō)明。本發(fā)明是一種Linux下PCI EXPRESS熱插拔的實(shí)現(xiàn)機(jī)制,允許用戶在不關(guān)閉系統(tǒng), 不切斷電源的情況下取出和更換損壞的PCI EXPRESS設(shè)備,從而提高了系統(tǒng)對(duì)災(zāi)難的及時(shí)恢復(fù)能力、擴(kuò)展性和靈活性等。其中該發(fā)明包括熱插拔服務(wù)程序。該程序分為L(zhǎng)inux核內(nèi)部分和核外部分,其控制邏輯以模塊的方式加載入內(nèi)核,負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作;核外部分為用戶空間腳本,從內(nèi)核中調(diào)用,并根據(jù)內(nèi)核傳回的信息執(zhí)行后續(xù)處理過(guò)程。標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)。系統(tǒng)調(diào)用驅(qū)動(dòng)程序,執(zhí)行驅(qū)動(dòng)的初始化代碼。這些代碼完成設(shè)備的設(shè)置,并填寫設(shè)備的PCI EXPRESS配置命令寄存器的相關(guān)標(biāo)志位來(lái)激活設(shè)備。如圖1所示,在Iinux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,實(shí)現(xiàn)PCI-EXPRESS設(shè)備的插入和拔出。如圖2所示,在熱插入的時(shí)候,該方法首先確定PCI-EXPRESS設(shè)備熱插入的事件, 然后由熱插拔服務(wù)程序向熱插拔驅(qū)動(dòng)模塊發(fā)去請(qǐng)求,為插槽加電。加電后,進(jìn)行鏈路連接測(cè)試,確定加電成功。操作系統(tǒng)會(huì)為PCI-EXPRESS設(shè)備分配資源,配置PCI-EXPRESS設(shè)備的功能。最后操作系統(tǒng)會(huì)加載PCI-EXPRESS設(shè)備的驅(qū)動(dòng)程序,并填寫設(shè)備的PCI配置命令寄存器的相關(guān)標(biāo)志位來(lái)激活設(shè)備。如圖3所示,在熱拔出的時(shí)候,該方法首先確定PCI-EXPRESS設(shè)備熱拔出的事件,熱插拔服務(wù)程序命令PCI-EXPRESS設(shè)備驅(qū)動(dòng)保持靜默,即驅(qū)動(dòng)一方面必須停止向PCI-EXPRESS設(shè)備發(fā)出請(qǐng)求,另一方面必須完成或者終止所有發(fā)出的請(qǐng)求,并禁止 PCI-EXPRESS設(shè)備產(chǎn)生新的事務(wù),再將PCI-EXPRESS插槽所連接的端口禁止掉,這樣就切斷了 PCI-EXPRESS設(shè)備的電源。成功切斷電源后手動(dòng)拔出PCI-EXPRESS設(shè)備。操作系統(tǒng)釋放內(nèi)存空間,I/O空間等屬于該設(shè)備的系統(tǒng)資源。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本領(lǐng)域的技術(shù)人員在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書所限定的保護(hù)范圍為準(zhǔn)。除說(shuō)明書所述的技術(shù)特征外,均為本專業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1.一種Linux下PCI EXPRESS熱插拔的方法,其特征在于,系統(tǒng)包括熱插拔服務(wù)程序和標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序,其中熱插拔服務(wù)程序該程序分為L(zhǎng)inux核內(nèi)部分和核外部分,其控制邏輯以模塊的方式加載入內(nèi)核,負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作;核外部分為用戶空間腳本,從內(nèi)核中調(diào)用,并根據(jù)內(nèi)核傳回的信息執(zhí)行后續(xù)處理過(guò)程;標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序系統(tǒng)調(diào)用驅(qū)動(dòng)程序,執(zhí)行驅(qū)動(dòng)程序的初始化代碼,這些代碼完成設(shè)備的設(shè)置,并填寫設(shè)備的PCI EXPRESS配置命令寄存器的相關(guān)標(biāo)志位來(lái)激活設(shè)備。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于熱插拔服務(wù)程序和標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序?yàn)長(zhǎng)inux核心可加載模塊,且負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,實(shí)現(xiàn)PCI EXPRESS設(shè)備的插入和拔出方法包括以下步驟系統(tǒng)確認(rèn)要進(jìn)行熱插拔操作;熱插拔服務(wù)程序根據(jù)PCI EXPRESS插槽的使用情況,分離PCI EXPRESS設(shè)備;人工進(jìn)行熱插拔操作;如果是熱插入則加載驅(qū)動(dòng)模塊激活熱插入的設(shè)備,如果是熱拔出則是設(shè)備驅(qū)動(dòng)模塊保持靜默,操作系統(tǒng)釋放內(nèi)存空間和I/O空間,中斷線程曾經(jīng)屬于該設(shè)備的系統(tǒng)資源。
4.根據(jù)權(quán)利要求4所述的方法,其特征在于,在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,熱插拔服務(wù)程序調(diào)用了核心線程eVent_thread。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,在Linux操作系統(tǒng)帶電運(yùn)行的過(guò)程中,在激活或者靜默PCI EXPRESS設(shè)備時(shí),使用了標(biāo)準(zhǔn)熱插拔驅(qū)動(dòng)模塊。
6.根據(jù)權(quán)利要求4所述的方法,其特征在于,在熱插入激活設(shè)備操作時(shí),執(zhí)行如下操作1)執(zhí)行適配卡添加的一系列相關(guān)操作失敗恢復(fù)預(yù)處理,存在性檢驗(yàn)、打開電源,檢查link training狀態(tài),獲取設(shè)備基本信息,配置設(shè)備,為設(shè)備建立相關(guān)數(shù)據(jù)結(jié)構(gòu),掛接到上級(jí)總線;2)為新添加的設(shè)備查找并掛接驅(qū)動(dòng)程序;3)對(duì)于橋接設(shè)備,把它掛接到上級(jí)總線后,還要繼續(xù)對(duì)其下級(jí)總線進(jìn)行掃描和掛接;4)通知用戶態(tài)守護(hù)進(jìn)程,更新插槽狀態(tài)。
全文摘要
本發(fā)明提供一種Linux下PCI EXPRESS熱插拔的方法,系統(tǒng)包括熱插拔服務(wù)程序和標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序,其中:熱插拔服務(wù)程序該程序分為L(zhǎng)inux核內(nèi)部分和核外部分,其控制邏輯以模塊的方式加載入內(nèi)核,負(fù)責(zé)監(jiān)控及處理PCI EXPRESS總線上的熱插拔動(dòng)作;核外部分為用戶空間腳本,從內(nèi)核中調(diào)用,并根據(jù)內(nèi)核傳回的信息執(zhí)行后續(xù)處理過(guò)程;標(biāo)準(zhǔn)熱插拔系統(tǒng)驅(qū)動(dòng)程序系統(tǒng)調(diào)用驅(qū)動(dòng)程序,執(zhí)行驅(qū)動(dòng)程序的初始化代碼,這些代碼完成設(shè)備的設(shè)置,并填寫設(shè)備的PCIEXPRESS配置命令寄存器的相關(guān)標(biāo)志位來(lái)激活設(shè)備。
文檔編號(hào)G06F9/44GK102508659SQ201110321678
公開日2012年6月20日 申請(qǐng)日期2011年10月21日 優(yōu)先權(quán)日2011年10月21日
發(fā)明者向松 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司