【我所認知的BIOS】—>PCI 的中斷(PIC下)__IOS

來源:互聯網
上載者:User
【我所認知的BIOS】—>PCI 的中斷(PIC下)

LightSeed     

2009-5-13      1、PCI中斷概述

註:整篇都是討論在PIC(8259)下的中斷過程。當PCI設備插到主板上後(本來南橋裏含有的當然就不用插啦),它要和其他設備通訊,或者讓CPU幫它做這般這般,或者CPU讓它做那般那般等等。。。那麼他們究竟是怎麼通訊的呢。這就是PCI中斷在中間起的強大作用。PCI中斷,有一個很大的特點,它可以共用。這個特點我先提出來,對於後面講做個鋪墊。 2、PCI中斷的HW

在談到PCI設備的時候,我要首先說明一下。我們平時用程式去scan的那個device是邏輯上的device。比如說BUS#0DEV#31FUN0中說的device是邏輯device。而平時我們說一個PCI顯卡,PCI網卡設備,他們都是物理device。一個物理device可能會有多個邏輯device。這裡其實就是function的意思。邏輯device其實是function。這裡要搞清楚。圖2.1是對PCI設備中斷的抽象圖。

PCI設備用INTA~INTD pin連接到8259來傳送中斷信號。需要說明的是,單function的PCI設備只能用INTA。

 

 

PCI 的中斷(PIC下)__IOS">

圖2.1 PCI設備中斷的抽象圖

正如圖2.1所示,設備引出的INTx連接經過中斷路由後連接到8259的PIRQA~D。 3、INTx的繞線

細心的人肯定會發現,上面圖2.1中的連線是有繞的。那麼爲什麽HW要這樣做呢。這就牽涉到“loading balance”的概念。以下是引用程式設計俱樂部的文章,原作者liaoo

 

“Interrupt pin為出廠時就決定的,不能改變. Ex. 使用 SE or ru check PCI Reg3Dh = 01/02/03/04 for INT#A/B/C/D. 而 interrupt line則是BIOS知道了 "routing"後去填的.例如,BIOS知道

INT#A最終會接到 PIC mode的 8259的 IRQ 11,則 PCI Reg3Ch在 PCI scan 階段會被填成 "0Bh". 至於你說的如何接,PCI spec有提到,為了 "loading balance", board designer可以決定.Ex. 2 PCI devices, 都是利用 INT#A發 interrupt(so their PCI Reg3Dh = 01h).兩者接到同一個板子上. 假如,board designer決定將:(以下為假設的接法)

PCI slot1 接成: INT#A接到 I-router的INT#B,INT#B接到 I-router的INT#C,INT#C接到 I-router的INT#D,INT#D接到 I-router的INT#A PCI slot2 接成: INT#A接到 I-router的INT#A,INT#B接到 I-router的INT#B,INT#C接到 I-router的INT#C,INT#D接到 I-router的INT#D

則當 2 PCI devices接到 slot1 and 2時,就發生:雖然都是透過INT#A發 interrupt,但是,最後卻是從 "不同的 source出去的 ( Device 1 從 INT#B出去,Device 2從 INT#A出去...)” 4、分配IRQ給PCI設備。

如前文所述,繞線好了後,經過路由INTx都連接到了PIRQA~D。BIOS kernel會把經過計算好的可以用的PCI irq No.分配給PIRQA~D。比如說PIRQA~D分別對應IRQ5,IRQ9,IRQ5,IRQ9。那麼最終連接到PIRQA上的設備(邏輯設備)都會分配到IRQ5。至此PCI IRQ的分配就算是完成了。 5、關於PCI IRQ的說明

有人肯定會疑問,爲什麽上面PIRQA和PIRQC對應的IRQ No.都是5呢。這個怎麼能通訊啊。呵呵,您的擔心是正常的,但是又是工程師們已經解決了的問題。篇首有提到,PCI IRQ是可以共用的。在這裡便被派上用場啦。 6、關於PCI IRQ Routing Table 6.1 PCI IRQ Routing Table綜述

上面的幾點我們談的熱火朝天,只有確定了PCI設備的INTx連接到了南橋的PIRQy那麼就可以正確地把IRQ No.分配給相應的PCI設備了。但是這裡有一個缺點:OS或者其他說軟體是無法知道硬體上究竟某個設備的INTx與南橋的PIRQy具體是怎麼對應的。OS或者其他軟體在不值得的情況下就不能正確分配IRQ No.給設備。那麼這個PCI IRQ Routing Table就挺身而出充當了描述硬體資訊的這麼一個角色。它在整個IRQ分配的過程中,是重中之重。那麼我們來分析一下它的架構。 6.2 PCI IRQ Routing Table 的結構

Byte Offset

Size in Bytes

Name

0

4

Signature

4

2

Version

6

2

Table Size

8

1

PCI Interrupt Router's Bus

9

1

PCI Interrupt Router's DevFunc

10

2

PCI Exclusive IRQs

12

4

Compatible PCI Interrupt Router

16

4

Miniport Data

20

11

Reserved (Zero)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.