PCI/PCIe配置空間

簡介

一個PCI/PCIe設(shè)備的配置空間是給其他設(shè)備/RC暴露的接口,可以通過配置空間查看設(shè)備的一些能力集咖杂、狀態(tài)等庆寺,也可以下發(fā)寫配置命令來控制設(shè)備打開某些功能(設(shè)備必須支持才可以)

對于傳統(tǒng)PCI設(shè)備的配置空間使用256個字節(jié)的大小,而PCIe在PCI的基礎(chǔ)上擴展到了4K的大小诉字,如下圖所示


設(shè)備配置空間劃分

也即PCIe完成兼容PCI的配置空間懦尝,都包含前256字節(jié)知纷,只有0xFF之后的空間是PCIe設(shè)備獨有的

PCI/PCIe公共配置空間頭

公共配置空間頭共占用64個字節(jié),如下圖:


配置空間頭信息

PCI/PCIe設(shè)備能力集

PCI/PCIe兼容能力集

PCI/PCIe設(shè)備能力集存放在配置空間頭之后的空間中(0x40開始的空間)陵霉,但是每類設(shè)備琅轧、或者不同廠家的設(shè)備支持的能力集、存放的順序不一樣踊挠,怎么找到設(shè)備具體包含哪些能力以及都存放在什么位置呢乍桂?

規(guī)范中是通過一個鏈表來實現(xiàn)的,表頭就存放在配置空間頭信息的0x34位置(Capabilities Pointer)效床,這個表頭就指向第一個能力所在的位置睹酌,每一個能力集都的Capability Header包含兩個內(nèi)容:

  • 當(dāng)前能力ID,bit[7:0]表示
  • 指向下一個能力的位置剩檀,bit[15:8]表示

注意:

  1. 此鏈表只能表示前256字節(jié)內(nèi)部存放的能力集憋沿;256~4K的空間內(nèi)存放PCIe擴展的能力集,具體的查找方式見下一節(jié)
    2.最后一個能力的“批向下一個能力的位置”為0表示此能力為鏈表中最后一個

以PM Cap為例沪猴,能力定義如下


PM能力前兩個字節(jié)說明

一個實際的SSD磁盤的公共配置空間如下圖所示:


一個SSD的前256字節(jié)配置空間

先讀取0x34的值為0x40辐啄,表示第一個能力的位置,讀取0x40的值表示當(dāng)前能力的ID字币;讀取0x41的值表示下一個能力的位置则披。共缕。洗出。

從圖中看此SSD的基本能力集如下:


基本能力集信息

PCIe擴展能力集

如果是PCIe設(shè)備的話,還會有PCIe規(guī)范定義的擴展能力集图谷,開始位置固定在0x100為第一個擴展能力翩活,也是通過一個鏈表來表示(與基本能力集不在同一個鏈表),Capability Header中包含三個內(nèi)容:

  • Capability ID便贵,bit[15:0]表示
  • version菠镇,bit[19:16]表示
  • next Capability,bit[31:20]表示

以AER為例承璃,Capability Header如下圖


AER Capability Header

一個實際的SSD磁盤的配置空間如下圖所示(4K太大利耍,只截取到0x200):


前0x200字節(jié)的配置空間數(shù)據(jù)

讀取0x100地址的前4字節(jié)為0x16820001,拆分之后為id=0x1盔粹,vs=0x2隘梨,next=0x168

從圖中看此SSD的擴展能力集如下圖所示:


一個SSD的擴展能力集

Capability Struct

每個能力在配置空間中存放的位置找到之后就要以根據(jù)此Capability定義的結(jié)構(gòu)訪問對應(yīng)每個字段值即可,主要參考PCIe規(guī)范的第7章內(nèi)容

在系統(tǒng)啟動舷嗡,或者可熱插入設(shè)備插入時轴猎,對此設(shè)備進行枚舉的過程中就可以按此方法訪問設(shè)備的配置空間所提供的能力集

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市进萄,隨后出現(xiàn)的幾起案子捻脖,更是在濱河造成了極大的恐慌锐峭,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件可婶,死亡現(xiàn)場離奇詭異沿癞,居然都是意外死亡,警方通過查閱死者的電腦和手機矛渴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門抛寝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曙旭,你說我怎么就攤上這事盗舰。” “怎么了桂躏?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵钻趋,是天一觀的道長。 經(jīng)常有香客問我剂习,道長蛮位,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任鳞绕,我火速辦了婚禮失仁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘们何。我一直安慰自己萄焦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布冤竹。 她就那樣靜靜地躺著拂封,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鹦蠕。 梳的紋絲不亂的頭發(fā)上冒签,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音钟病,去河邊找鬼萧恕。 笑死,一個胖子當(dāng)著我的面吹牛肠阱,可吹牛的內(nèi)容都是我干的票唆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼辖所,長吁一口氣:“原來是場噩夢啊……” “哼惰说!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缘回,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤吆视,失蹤者是張志新(化名)和其女友劉穎典挑,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體啦吧,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡您觉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了授滓。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片琳水。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖般堆,靈堂內(nèi)的尸體忽然破棺而出在孝,到底是詐尸還是另有隱情,我是刑警寧澤淮摔,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布私沮,位于F島的核電站,受9級特大地震影響和橙,放射性物質(zhì)發(fā)生泄漏仔燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一魔招、第九天 我趴在偏房一處隱蔽的房頂上張望晰搀。 院中可真熱鬧,春花似錦办斑、人聲如沸外恕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吁讨。三九已至,卻和暖如春峦朗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背排龄。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工波势, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橄维。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓尺铣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親争舞。 傳聞我的和親對象是個殘疾皇子凛忿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • PCIe 配置 1.BDF 和pci 總線一樣,pcie 通過8bit Bus number, 5bit Devi...
    1哥閱讀 2,322評論 0 1
  • 怎樣訪問pcie整個4k的配置空間 - blfbuaa - 博客園 (cnblogs.com)[https://w...
    薛東弗斯閱讀 144評論 0 0
  • 每個PCIe設(shè)備竞川,有這么一段空間店溢,Host軟件可以讀取它獲得該設(shè)備的一些信息叁熔,也可以通過它來配置該設(shè)備,這段空間就...
    小學(xué)究鑫鑫閱讀 610評論 0 0
  • PCIE 性能 下表列舉了各代PCIE的性能床牧,可見 PCIE總的傳輸速率 = lane數(shù) * 單lane帶寬 PC...
    6d372579d253閱讀 9,493評論 0 1
  • [https://www.zhihu.com/topic/20054793] PCI/PCIe軟件界面 1荣回。配置空...
    小學(xué)究鑫鑫閱讀 983評論 0 0