亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
12345678下一頁(yè)
最近訪問(wèn)板塊 發(fā)新帖
查看: 66772 | 回復(fù): 71
打印 上一主題 下一主題

還是不理解IOMMU、北橋、PCI的MMIO和ioremap [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-03-23 17:20 |只看該作者 |倒序?yàn)g覽
(albcamus案:
作者原題目是:《 還是不太理解mmu和io-map》
修改一下,以符合主要的討論內(nèi)容)

該看哪些資料呢?

[ 本帖最后由 albcamus 于 2009-3-27 17:43 編輯 ]

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-03-23 17:51 |只看該作者
原帖由 epegasus 于 2008-3-23 17:20 發(fā)表
該看哪些資料呢?

我論文終于寫(xiě)完了啦!。。。。!狂歡喜中,這兩個(gè)月被這個(gè)煩死了!
發(fā)個(gè)鏈接,這個(gè)是intel的iommu的spec
http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf

心情愉快,大概講一下IOMMU是個(gè)啥東西。 注意我說(shuō)的IOMMU是指位于北橋上的IOMMU,那種設(shè)備自帶IOMMU的情況我還不了解。
在沒(méi)有IOMMU的情況下,設(shè)備(指32bit或64bit設(shè)備,老的16bit的不提)的DMA操作可以訪問(wèn)整個(gè)物理地址空間,所以理論上設(shè)備可以向操作系統(tǒng)的代碼段、數(shù)據(jù)段等內(nèi)存區(qū)域做DMA,從而破壞整個(gè)系統(tǒng)。當(dāng)然,通常來(lái)說(shuō)不會(huì)有這樣的設(shè)備。IOMMU的出現(xiàn),可以實(shí)現(xiàn)地址空間上的隔離,使設(shè)備只能訪問(wèn)規(guī)定的內(nèi)存區(qū)域。下面簡(jiǎn)要說(shuō)一下intel的IOMMU怎么做到這點(diǎn)的:
目前PC架構(gòu)最多有256PCI總線,于是IOMMU用一個(gè)稱(chēng)為root entry的數(shù)據(jù)結(jié)構(gòu)描述PCI總線,總共256個(gè)root entry構(gòu)成一張表。每條PCI總線最多允許256個(gè)設(shè)備,IOMMU用context entry描述一個(gè)PCI設(shè)備(或者是PCI橋),256個(gè)context entry構(gòu)成一張表。所以就有了如圖的關(guān)系。我們知道,PCI設(shè)備用 {BUSEV:FUNC}(當(dāng)然,還有個(gè)segment,不過(guò)似乎PC架構(gòu)都只有一個(gè)segment,這個(gè)暫時(shí)忽略)描述一個(gè)設(shè)備。所以對(duì)于一個(gè)特定設(shè)備,用bus號(hào)做索引root entry表,用dev號(hào)索引context entry表可以找到描述該設(shè)備的的context entry。context entry中有一個(gè)指針指向一章I/O頁(yè)表,當(dāng)設(shè)備發(fā)起DMA操作時(shí),IOMMU會(huì)根據(jù)該頁(yè)表把設(shè)備的DMA地址轉(zhuǎn)換成該設(shè)備可以訪問(wèn)內(nèi)存區(qū)域的地址。
所以只要為設(shè)備建一張I/O頁(yè)表,就可以使設(shè)備只能訪問(wèn)規(guī)定的內(nèi)存區(qū)域了。當(dāng)然,也可以把該頁(yè)表當(dāng)成跳板,讓只能尋址32bit地址空間的設(shè)備訪問(wèn)到64bit地址空間中去。

大概就是這么回事了,似乎寫(xiě)的有點(diǎn)亂,具體問(wèn)題看spec。

rootentry.jpg (25.55 KB, 下載次數(shù): 498)

rootentry.jpg

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-03-23 18:32 |只看該作者
原帖由 zx_wing 于 2008-3-23 17:51 發(fā)表

我論文終于寫(xiě)完了啦。。。。。!狂歡喜中,這兩個(gè)月被這個(gè)煩死了!
發(fā)個(gè)鏈接,這個(gè)是intel的iommu的spec
http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf

心情 ...

IOMMU對(duì)于虛擬化技術(shù)由重要的應(yīng)用,
其中最重要的功能是DMA remapping,
使得外部設(shè)備可以如同虛擬機(jī)一樣使用客戶物理地址進(jìn)行尋址,
這樣做就避免了當(dāng)前I/O虛擬化中常常使用的技術(shù)如Xen的split driver model以及device emulation.
另外IOMMU的可以與硬件輔助的內(nèi)存虛擬化共享頁(yè)表層次,
大大簡(jiǎn)化了hypervisor/VMM的設(shè)計(jì).
(AMD的IOMMU有一個(gè)有趣的特性:其本身就具有可已被虛擬化)

[ 本帖最后由 crspo 于 2008-3-23 18:38 編輯 ]

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2008-03-24 09:14 |只看該作者

回復(fù) #2 zx_wing 的帖子

先加個(gè)精華,方便以后找。

不過(guò)老大, 我懷疑樓主是問(wèn)MMU和ioremap ^_^

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2008-03-24 09:45 |只看該作者
如果是一般的mmu管理和ioremap我就不敢麻煩各位老大了。。情景分析和intel 手冊(cè)上有夠詳盡的講解。
我正是為zx_wing 講的那個(gè)困惑,我以前只知道可以通過(guò)pci_read_config_dword之類(lèi)可以讀寫(xiě)pci設(shè)備上的寄存器,而設(shè)備上如果有eeprom之類(lèi)的東西,那又是如何操作的呢?總不能把pci_read_config_dword這個(gè)拿來(lái)做ioremap吧。
不過(guò)zx_wing 講的還是不太懂看來(lái)要努力了。。
還有,老大可否在答辯后,把論文貼上來(lái),給大家學(xué)習(xí)?

[ 本帖最后由 epegasus 于 2008-3-24 10:31 編輯 ]

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2008-03-24 10:57 |只看該作者
原帖由 epegasus 于 2008-3-24 09:45 發(fā)表
如果是一般的mmu管理和ioremap我就不敢麻煩各位老大了。。情景分析和intel 手冊(cè)上有夠詳盡的講解。
我正是為zx_wing 講的那個(gè)困惑,我以前只知道可以通過(guò)pci_read_config_dword之類(lèi)可以讀寫(xiě)pci設(shè)備上的寄存器, ...

pci_read_config_dword印象中是用于讀取PCI設(shè)備的配置空間,主要用于PCI設(shè)備的枚舉和配置。
ioremap應(yīng)該是用作mmio,與configure space概念上有所區(qū)別。

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2008-03-24 12:50 |只看該作者
原帖由 epegasus 于 2008-3-24 09:45 發(fā)表
如果是一般的mmu管理和ioremap我就不敢麻煩各位老大了。。情景分析和intel 手冊(cè)上有夠詳盡的講解。
我正是為zx_wing 講的那個(gè)困惑,我以前只知道可以通過(guò)pci_read_config_dword之類(lèi)可以讀寫(xiě)pci設(shè)備上的寄存器, ...

汗,這幾個(gè)問(wèn)題就真和IOMMU沒(méi)有關(guān)系了。
如crspo所說(shuō),pci_read_config_dword是用于讀取PCI設(shè)備的配置空間的,不是讀寄存器的。PCI配置空間的具體信息你可以baidu一下,我就不打字了,但對(duì)于上層軟件,它最主要的用處是提供interrupt line和PCI bar(PCI base address register)。PCI bar就是該設(shè)備可用port i/o和mmio訪問(wèn)的寄存器的基地址。除了寄存器,還有一種稱(chēng)為擴(kuò)展rom,也是通過(guò)mmio訪問(wèn)的。而ioremap的作用就是把pci bar(pci bar是物理地址)映射到虛擬地址空間中。所以它和pci_read_config_dword是下列關(guān)系:

pci_read_config_dword得到PCI bar ----> ioremap映射PCI bar到虛擬地址空間, 返回一個(gè)虛擬地址,以后通過(guò)該地址讀寫(xiě)設(shè)備的寄存器

上面的內(nèi)容和IOMMU都沒(méi)有關(guān)系,軟件對(duì)設(shè)備的port I/O和MMIO都不經(jīng)過(guò)IOMMU,訪問(wèn)方式和以前是一樣的,見(jiàn)這個(gè)帖子http://www.72891.cn/viewthr ... p;extra=&page=1

IOMMU是對(duì)于設(shè)備發(fā)起DMA操作來(lái)說(shuō)的,你可以理解成設(shè)備用于做DMA的地址是一個(gè)虛擬地址(這個(gè)虛擬地址和我們平時(shí)說(shuō)的那個(gè)不一樣,是指設(shè)備DMA用的地址不是真實(shí)的物理地址,沒(méi)有IOMMU的情況下用的是物理地址)。也有稱(chēng)這個(gè)虛擬地址為總線地址的,但我認(rèn)為不恰當(dāng),容易讓人誤解。

對(duì)于eeprom的訪問(wèn),它又和mmio還有iommu都沒(méi)有關(guān)系。eeprom是個(gè)串行設(shè)備,它不是被ioremap到虛擬地址空間訪問(wèn),而是通過(guò)PCI bar報(bào)告一個(gè)eeprom寄存器給操作系統(tǒng),這個(gè)寄存器有一個(gè)bit的di(data in)、一個(gè)bit的do(data out)、一個(gè)bit的clk(時(shí)鐘)。時(shí)鐘在下降沿生效,寫(xiě)的時(shí)候通過(guò)di一個(gè)bit一個(gè)bit的寫(xiě),讀的時(shí)候通過(guò)do一個(gè)bit一個(gè)bit的讀。

論文等我答辯完吧,寫(xiě)的很爛的,基本沒(méi)講啥子細(xì)節(jié),就想糊弄過(guò)關(guān)。

[ 本帖最后由 zx_wing 于 2008-3-24 12:51 編輯 ]

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2008-03-24 12:56 |只看該作者
原帖由 albcamus 于 2008-3-24 09:14 發(fā)表
先加個(gè)精華,方便以后找。

不過(guò)老大, 我懷疑樓主是問(wèn)MMU和ioremap ^_^

LZ的帖子原來(lái)就叫“ 還是不太理解mmu和io-map”嗎。。???
我怎么記得昨天問(wèn)的是IOMMU呢,完了,肯定是寫(xiě)論文寫(xiě)傻了,看成IOMMU了。
如果是的話,LZ把關(guān)于IOMMU的內(nèi)容去掉不看,免得干擾。。。汗

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2008-03-24 12:57 |只看該作者
感覺(jué)ioremap的用處主要在于為設(shè)備內(nèi)存建立頁(yè)表 返回可供內(nèi)核訪問(wèn)的虛擬地址 驅(qū)動(dòng)里面常用
pci_read_config_dword好像用的很少  按照l(shuí)dd說(shuō)法就是拿來(lái)訪問(wèn)配置空間的
具體也不清楚  搬板凳學(xué)習(xí)

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2008-03-24 14:40 |只看該作者
zx_wing 老大可否就這段代碼講解一下?

phymem = pci_resource_start(pdev, 0);
    if (!request_mem_region(phymem, pci_resource_len(pdev, 0), "eth")) {
        printk(KERN_ERR "eth_pci: cannot reserve PCI memory region\n");
        goto bad;
    }

    mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
    if (!mem) {
        printk(KERN_ERR "eth_pci: cannot remap PCI memory region\n") ;
        goto bad1;
    }
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP