我需要分配4K对齐的64 个块的128K 内存。Currentyl按分配使用需要具有DMA 功能。当我这样做时,我收到以下警告消息。这是否意味着我的请求失败了?pci_alloc_consistent()
phy_addr
------------[ cut here ]------------
WARNING: at mm/page_alloc.c:2045 __alloc_pages_nodemask+0x8d9/0x940() (Tainted: P ---------------- )
Hardware name: ProLiant DL165 G5
Modules linked in: vgchal(P+)(U) vgcport(P)(U) autofs4 sunrpc cpufreq_ondemand powernow_k8 freq_table mperf ipt_REJECT nf_conntrack_ipv4 nf_defrag_ipv4 iptable_filter ip_tables ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack ip6table_filter ip6_tables ipv6 uinput tg3 vgcinit(P)(U) vgcdebug(P)(U) sg microcode k10temp amd64_edac_mod edac_core edac_mce_amd i2c_piix4 i2c_core shpchp ext3 jbd mbcache hpsa cciss sr_mod cdrom ata_generic pata_acpi pata_serverworks sata_svw dm_mirror dm_region_hash dm_log dm_mod [last unloaded: scsi_wait_scan]
Pid: 2448, comm: insmod Tainted: P ---------------- 2.6.32-220.el6.x86_64 #1
Call Trace:
[<ffffffff81069b77>] ? warn_slowpath_common+0x87/0xc0
[<ffffffff81069bca>] ? warn_slowpath_null+0x1a/0x20
[<ffffffff81124069>] ? __alloc_pages_nodemask+0x8d9/0x940
[<ffffffff81147fc9>] ? vmap_page_range_noflush+0x279/0x370
[<ffffffff811474da>] ? __insert_vmap_area+0x7a/0xd0
[<ffffffff81010f46>] ? dma_generic_alloc_coherent+0xa6/0x160
[<ffffffff8103bb89>] ? gart_alloc_coherent+0x49/0x140
[<ffffffffa00ee5e5>] ? dbh_hal_init+0x105/0x410 [vgchal]
[<ffffffffa00ee805>] ? dbh_hal_init+0x325/0x410 [vgchal]
[<ffffffffa0113095>] ? hal_module_init+0x95/0xa0 [vgchal]
[<ffffffff81096e75>] ? __blocking_notifier_call_chain+0x65/0x80
[<ffffffffa0113000>] ? hal_module_init+0x0/0xa0 [vgchal]
[<ffffffff8100204c>] ? do_one_initcall+0x3c/0x1d0
[<ffffffff810af641>] ? sys_init_module+0xe1/0x250
[<ffffffff8100b0f2>] ? system_call_fastpath+0x16/0x1b
正如我所读到的,pci_alloc_consistent()
应该能够分配超过128K 的内存,但找不到它可以做的最大值。请让我知道这里出了什么问题。