- 論壇徽章:
- 0
|
沒看完,也沒看仔細(xì),等抽時(shí)間細(xì)看。 AFAICT, 這份文檔的深度、廣度以及歷史追溯上,是至少我前所未見的。
一些商榷的地方(邊看邊發(fā))
-------------------------
P9:
>> APIC Bus 已經(jīng)不存在,系統(tǒng)的前端總線代替了它。
APIC Bus已經(jīng)不存在了, 取而代之的是, LAPIC之間、LAPIC和IOAPIC之間的通信,通過前端總線來傳遞。
P10:
>> 當(dāng) IOAPIC 某個(gè)管腳接收到中斷信號(hào)后,會(huì)根據(jù)該管腳對(duì)應(yīng)的 RTE,格式化出一條中
>> 斷消息,發(fā)送給某個(gè) CPU 的 LAPIC。
嚴(yán)謹(jǐn)起見,「發(fā)送給某個(gè)CPU」應(yīng)改為「發(fā)送給某個(gè)或某些CPU」
P13:
>> X86 spec 說 4bit 的 LAPIC ID 可 以 表 示 15 個(gè) CPU , 還 有 一 個(gè) 哪 兒 去 了 ? 我 想 是 留 給
IOAPIC 了。
對(duì)Pentium和P6家族CPU來說, APIC ID == 0x0f是廣播ID,即匹配所有的LAPICs。
手冊(cè)卷III,8.6.2.1 Physical Destination Mode節(jié)說:
For the P6 family and Pentium processors, a single destination is specified in physical
destination mode with a local APIC ID of 0H through 0EH, allowing up to 15 local
APICs to be addressed on the APIC bus. A broadcast to all local APICs is specified with
0FH.
P19:
>> IOAPIC2 有 16 個(gè)管腳,GSI base 為 24,GSI 范圍為[24,39],依次類推。
這里應(yīng)該是IOAPIC1吧?
P25:
>> 筆者:每個(gè) CPU 都用同樣的物理地址訪問自己的 LAPIC。這說明除了 x86 平臺(tái)的 port
I/O 具有 64K 獨(dú)立的物理地址空間外,LAPIC 也擁有獨(dú)立的物理地址。我能想到的理由是
防止 CPU 訪問不屬于自己的 LAPIC。
不同意這種觀點(diǎn)。 CPU以I/O指令訪問IO ports,無論如何,是要走總線的; 而訪問自己的LAPIC,
無論如何,都不需要走總線,而是由CPU(BIU單元?)和LAPIC以及鏈結(jié)它們的硬件(不管是什么)來保證的。
當(dāng)然,我這也是猜測^_^
P26:
>> 該表用于重載 MADT 表頭中的 LAPIC 地址,整個(gè) MADT 表中只應(yīng)該包含一個(gè) LAPIC
address override entry。
建議補(bǔ)充一句(我覺得不補(bǔ)充很多人會(huì)糊涂):
之所以提供LAPIC address override entry,是因?yàn)樵趚86-64 CPU上物理抵制是64位的,
因此原來的4字節(jié)--也就是32位--的LAPIC物理地址是無效的,因此用這樣一個(gè)override機(jī)制來提供一個(gè)8字節(jié)
的LAPIC物理地址。
FIXME: 為什么IO-APIC不需要提供address override entry? 64位機(jī)器上的IOAPIC地址也是32位的?
P29:
>> 筆者:從 Linux 的注釋來看,TPR 將一直為 0。X86 spec 有這么一段話:
“ 對(duì) 于 使 用 lowest priority delivery mode 發(fā) 送 中 斷 , 卻 又 不 更 新 TPR 的
OS,芯片組將記憶 TPR 并將同一中斷發(fā)送給同樣的 CPU 處理。這將引起性
能損失”。
Mark一下,我也注意到了這句話,似乎Andi Kleen曾經(jīng)在lkml上解釋過,明天找找 |
|