我有一個Linux設備驅動程序,該設備驅動程序與理論上可以使用64位地址執行DMA的設備進行接口連接。我想測試,看看這實際上工作。強制Linux使用4G內存嗎?
有沒有一種簡單的方法可以強制Linux機器不使用物理地址4G以下的任何內存?如果內核映像處於低內存狀態,則可以;我只是希望能夠強制一種情況,即我知道所有動態分配的緩衝區,並且爲我分配的任何內核或用戶緩衝區都不能在32位中尋址。這是一個小小的蠻力,但比我能想到的其他任何東西都更全面。 (1)硬件配置不正確或加載了完整的地址(或者只是簡單的中斷),以及(2)意外和不必要的反彈緩衝區使用(因爲沒有地方反彈到)。
澄清:我正在運行x86_64,所以我不關心大多數舊的32位尋址問題。我只想測試一個驅動程序可以使用64位物理地址與多個緩衝區正確對接。
這似乎與我需要的非常接近,有兩點需要注意:首先,memmap = nn $ ss可以阻止內核讀取內存映射設備,包括PCI/PCIe總線上的所有內容。第二,我沒有辦法防止啓動時需要的內存,但隨後被釋放(如initrd映像)作爲DMA緩衝區被回收。 仍然有用的答案,謝謝。 – 2009-12-17 14:00:23