1. 程式人生 > >宋寶華:關於DMA ZONE和dma_alloc_coherent若干誤解的澄清

宋寶華:關於DMA ZONE和dma_alloc_coherent若干誤解的澄清

在32位X86計算機的條件下,ISA實際只可以訪問16MB以下的記憶體。那麼ISA上面假設有個網絡卡,要DMA,超過16MB以上的記憶體,它根本就訪問不到。所以Linux核心乾脆簡單一點,把16MB砍一刀,這一刀以下的記憶體單獨管理。如果ISA的驅動要申請DMA buffer,你帶一個GFP_DMA標記來表明你想從這個區域申請,我保證申請的記憶體你是可以訪問的。

DMA ZONE的大小,以及DMA ZONE要不要存在,都取決於你實際的硬體是什麼。比如我在CSR工作的時候,CSR的primaII晶片,儘管除SD MMC控制器以外的所有的DMA都可以訪問整個4GB記憶體,但MMC控制器的DMA只能訪問256MB,我們就把primaII對應Linux的DMA ZONE設為了256MB,詳見核心:arch/arm/mach-prima2/common.c

#ifdef CONFIG_ARCH_PRIMA2

static const char *const prima2_dt_match[] __initconst = {

        "sirf,prima2",

        NULL

};

DT_MACHINE_START(PRIMA2_DT, "Generic PRIMA2 (Flattened Device Tree)")

        /* Maintainer: Barry Song <[email protected]> */

        .l2c_aux_val    = 0,

        .l2c_aux_mask   = ~0,

        .dma_zone_size  = SZ_256M,

        .init_late      = sirfsoc_init_late,

        .dt_compat      = prima2_dt_match,

MACHINE_END

#endif


相關推薦

關於DMA ZONEdma_alloc_coherent若干誤解澄清

在32位X86計算機的條件下,ISA實際只可以訪問16MB以下的記憶體。那麼ISA上面假設有個網絡卡,要DMA,超過16MB以上的記憶體,它根本就訪問不到。所以Linux核心乾脆簡單一點,把16MB砍一刀,這一刀以下的記憶體單獨管理。如果ISA的驅動要申請DMA buffer,你帶一個GFP_DMA標記來表明

關於Linux進程優先級數字混亂的徹底澄清

自己 olt vp8 自己的 進程的優先級 內核 在一起 top命令 eol 宋寶華: 關於Linux進程優先級數字混亂的徹底澄清 原創: 宋寶華 Linux閱碼場 9月20日 https://mp.weixin.qq.com/s/44Gamu17Vkl77OGV2KkRm

CPU是如何訪問到記憶體的?--MMU最基本原理

原帖地址: 假設頁表只有一級 對於一個有MMU的CPU而言,MMU開啟後,CPU是這樣定址的:CPU任何時候,一切時候,發出的地址都是虛擬地址,這個虛擬地址發給MMU後,MMU通過頁表來在頁表裡面查出來這個虛擬地址對應的實體地址是什麼,從而去訪問外面的記憶體條。MMU裡面的頁表地址暫

Linux中的1024——給閱碼場Linuxer們的節日祝福

1024是程式設計師的狂歡節。基於二進位制的原理,程式設計師通常會把1024當做一個整數而不是1000。程式設計師這個行業處理“bit”,當然這個行業“苦逼”,這也讓我輕鬆地記住了一個單詞——bitter。bitter的意思就是“苦的”,bit後面加er字尾,是人,這裡只是會

Docker 最初的2小時(Docker從入門到入門)

最初的2小時,你會愛上Docker,對原理和使用流程有個最基本的理解,避免滿世界無頭蒼蠅式找資料。本人反對暴風驟雨式多管齊下狂轟濫炸的學習方式,提倡迭代學習法,就是先知道怎麼玩,有個感性認識,再深入學習高階用法,深層原理,一輪輪迭代。堅決反對一上來就搞幾百頁厚的東西把人腦子弄

Docker 最初的2小時(Docker從入門到入門)【轉】

最初的2小時,你會愛上Docker,對原理和使用流程有個最基本的理解,避免滿世界無頭蒼蠅式找資料。本人反對暴風驟雨式多管齊下狂轟濫炸的學習方式,提倡迭代學習法,就是先知道怎麼玩,有個感性認識,再深入學習高階用法,深層原理,一輪輪迭代。堅決反對一上來就搞幾百頁厚的東西把人腦子弄亂。 Docker是什麼? K

關於Ftrace的一個完整案例【轉】

Ftrace簡介 Ftrace是Linux進行程式碼級實踐分析最有效的工具之一,比如我們進行一個系統呼叫,出來的時間過長,我們想知道時間花哪裡去了,利用Ftrace就可以追蹤到一級級的時間分佈。 Ftrace案例 寫一個proc模組,包含一個proc的讀和寫的入口。test_proc_show()故意呼

迭代螺旋法——關於Linux學習方法的血淚建議

在下是一個碼農,也號稱是一個老溼,平生閱碼農無數(吹牛的 ^-^)。經由大量的案例,我能夠理解了為什麼很多碼農學了很多年Linux,還是感覺沒有掌握要領,仍然內心崩潰,最終對Linux吐血而亡,正所謂:人世間最大的痛苦,莫過於,碼農落花有意,而Linux流水無情.....

關於罪與慾望的深淵

《人民的名義》無疑是繼《潛伏》後最佳的國產電視劇,沒有之一。我們拋開它的反腐敗政治目的不談,電視劇本身關於罪與慾望,關於最深層次人性的揭祕,也深深地震撼每一個人。我反覆地問自己一個問題,如果也同樣置身在這汙穢的官場,我會是誰,我又會走向何處?說白了,我們大多數人都不過是一個凡

用systemd-nspawn執行最輕量級容器

systemd-nspawn可以建立最輕量級的容器(ns的意思就是namespace),本文的實驗平臺是Ubuntu 16.04,x86_64機器。本文的目的是:在Ubuntu中用systemd-nspawn啟動一個容器,執行Debian作業系統(Jessie),並在主機使用machinectl進行管理。

Linux裝置驅動框架裡的設計模式之——模板方法(Template Method)

本文系轉載,著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。 作者: 宋寶華 來源: 微信公眾號linux閱碼場(id: linuxdev) 前言 《設計模式》這本經典的書裡面定義了20多種設計模式,雖然都是面向物件的,似乎需要C++、Java這樣的語言才能實現,但是根據筆者前面反覆

ARM Linux 3.x的設備樹(Device Tree)

3rd else 命名 number 部分 kernel 傳統 rtc trigge 1. ARM Device Tree起源 Linus Torvalds在2011年3月17日的ARM Linux郵件列表宣稱“this whole ARM thing is a f*

C語言大型軟體設計的面向物件--專題視訊課程

C語言大型軟體設計的面向物件—369人已學習 課程介紹        C語言程式碼一旦達到一定規模,就特別強調良好的架構設計,以保證程式碼的可讀性好、程式碼簡潔以及可複用。此時,軟體設計師勢必要用C語言來做面向物件的設計。不能克服面向物件這一關,也是很多人無法讀懂Linux核

深入探究Linux/VxWorks裝置樹視訊教程--專題視訊課程

深入探究Linux/VxWorks裝置樹視訊教程—5116人已學習 課程介紹        很多人看了很Linux多裝置樹的資料後,還是不會用裝置樹。該Linux裝置樹視訊課程假設一個全新的電路板,上面有4個ARM核,一片中斷控制器、一個UART、一個GPIO控制器、一個I2

- Linux namespace

名稱空間是在OS之上實現容器與主機隔離,以及容器之間互相隔離的Linux核心核心技術。根據《Docker 最初的2小時(Docker從入門到入門)》一文,名稱空間本質上就是在不同的工作組裡面封官許願,讓大家在各自的部門裡面都是manager,而且彼此不衝突。本文接下來從細節做

《Linux裝置驅動開發詳解》——sysfs檔案系統與linux裝置模型(5.4.2)

以下讀書筆記內容,摘自宋寶華《Linux裝置驅動開發詳解》一書。 1、sysfs檔案系統的簡介 (1)linux2.6以後的核心引進syfs檔案系統,是虛擬檔案系統; (2)產生一個包括所有系統硬體

- KVM最初的2小時(KVM從入門到入不了門)

接著《Docker最初的2小時(Docker從入門到入門)》繼續聊,再花10個小時寫出《KVM最初的2小時(KVM從入門到入不了門)》。坦白講,由於KVM遠遠比Docker要複雜,還是要2小時愛上KVM,這絕非難事,所以很可能入不了門。原則上,我們繼續迭代學習,

《linux裝置驅動開發詳解》——platform裝置驅動(12.2)

以下讀書筆記,整理於宋寶華《linux裝置驅動開發詳解》一書。 1、piatform匯流排出現的原因 在SOC整合的獨立外設控制器、掛接在soc記憶體空間的外設不依附與此類匯流排(PCI、USB、I

OpenGL藍書第七章立體天空紋理折射、雙紋理(下)

ever oot 可行性 VR char 都是 pipeline 差異 pac 對照了藍寶書,才知道紅寶書的長處。 reflect函數的原理在紅寶書中有說明,僅僅有

黑客教父郭盛域名Whois數據隱私是最大風險

image 正在 inf 流程 成員 ima 互動 需要 開啟   在互聯網安全大會上,東方聯盟掌門人,黑客教父郭盛華呼籲RIR機構應為全球協調分配地址上作出改進,實現whois數據準確性的前進方向。他還說,域名whois隱私信息應默認對外關閉,同時最近APNIC合作SIG