2013-07-04 97 views
0

爲什麼我在嘗試分配600塊2 MB內存時使用 - pci_alloc_consistent有內核崩潰cpuacct_charge,有沒有更好的方法來做到這一點?使用pci_alloc_consistent分配內存的限制是什麼?

+0

'cpuacct_charge'與內存分配無關。這臺機器有多少內存?你需要什麼這個記憶? –

+0

我有6 Giga免費,和8總體而言,我需要一些PCI設備我使用 – shd

+0

PCI或PCIe?設備和主橋是否支持雙地址週期? –

回答

0

我能夠使用__get_free_pages()分配內存。

0

您可能用完32位尋址內存。

如果您的PCIe芯片實際支持較大的地址,您的驅動程序應該使用dma_set_maskdma_set_consistent_mask來告訴內核。 (見Documentation/DMA-API-HOWTO.txt

+0

我們已經這樣做了,我正在使用64位掩碼..仍然無法分配超過600Mb – shd

+0

使用'dma_get_mask'進行檢查。 –

+0

我甚至在使用kmalloc後約800MB的分配出於某種原因崩潰,有什麼想法? ,我的dma掩碼也是64位...我只是檢查了dma_get_mask – shd