Forum Discussion
Altera_Forum
Honored Contributor
16 years agoI followed this thread to test the DMA driver. It worked OK with 32bit Fedora 11. When we moved the card to CentOS 4.3 64bit linux, the dma_test failed. I can't figure out why, please help!
Here is the dmesg: altpciechdma init(), built at Oct 13 2009 13:54:17 probe(dev = 0xffff81015fb33800, pciid = 0xffffffff88661b80) probe() ape = 0xffff81015c9ac7c0 sizeof(struct ape_chdma_table) = 4096. table_virt = 0xffff810140e35000, table_bus = 0x 140e35000. PCI: Enabling device 0000:06:00.0 (0000 -> 0002) PCI: Setting latency timer of device 0000:06:00.0 to 64 Enabled MSI interrupting. Using a 64-bit DMA mask. IRQ pin# 0 (0=none, 1=INTA#...4=INTD#). IRQ line# 0. Succesfully requested IRQ# 194 with dev_id 0xffff81015c9ac7c0 BAR0 0xc0000000-0xcfffffff flags 0x00000200 BAR1 0xdcf80000-0xdcfbffff flags 0x00000200 BAR2 0xdcfc0000-0xdcffffff flags 0x00000200 BAR[0] mapped at 0xffffc20010370000 with length 32768(/268435456). BAR[2] mapped at 0xffffc2000002a000 with length 256(/262144). bar_tests(), PAGE_SIZE = 0x1000 write_header = 0xffffc2000002a000. read_header = 0xffffc2000002a010. &write_header->w3 = 0xffffc2000002a00c &read_header->w3 = 0xffffc2000002a01c ape->table_virt = 0xffff810140e35000. Allocated cache-coherent DMA buffer (virtual address = 0xffff810140784000, bus address = 0x0000000140784000). writing 0x000400ff to 0xffffc2000002a010 writing 0x00000001 to 0xffffc2000002a014 writing 0x40e35000 to 0xffffc2000002a018 Flush posted writes Start DMA read writing 0x000000fe to 0xffffc2000002a01c EPLAST = 64222 POLL FOR READ: EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 .............. Start DMA write POLL FOR WRITE: EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 EPLAST = 64222, n = 254 ................ [ffff810140784000] = 0x40784000 != [ffff810140786000] = 0x40786000 ?! [ffff810140784004] = 0x40784004 != [ffff810140786004] = 0x40786004 ?! [ffff810140784008] = 0x40784008 != [ffff810140786008] = 0x40786008 ?! [ffff81014078400c] = 0x4078400c != [ffff81014078600c] = 0x4078600c ?! [ffff810140784010] = 0x40784010 != [ffff810140786010] = 0x40786010 ?! [ffff810140784014] = 0x40784014 != [ffff810140786014] = 0x40786014 ?! [ffff810140784018] = 0x40784018 != [ffff810140786018] = 0x40786018 ?! [ffff81014078401c] = 0x4078401c != [ffff81014078601c] = 0x4078601c ?! [ffff810140784020] = 0x40784020 != [ffff810140786020] = 0x40786020 ?! ---more errors follow! not printed--- DMA loop back test FAILED. bar_tests() end, result -1 probe() successful.